
No.3ベストアンサー
- 回答日時:
> すみません 質問の仕方に問題があったようです
> ある文字列の特定の単語を別の単語に置き換えたいです
> そのとき置き換える単語は複数あってそれの一覧をファイルから読めるようにしたいのですがどうしたらよいでしょう?
#2 の答えではヒントにならないですか?
質問の仕方云々のせいで二つもコーディングパターンを作らないといけないのはかなり癪です。
ご自身の努力ではどの程度までいったんでしょうかね。
サンプルとして、
[chikan.dat]
---
# 置換対象の文字
TARGET = あら!
TARGET = おや!
TARGET = まあ!
TARGET = やあ!
# 置換後の文字
REPLACED = なんてこったい!
---
[chikan.pl]
---
# 元の文字列
my $string =
q{あら!あんなところにryuta_moがいるわ
おや!あんなところにnipotanがいるよ
まあ!ryuta_mo
やあ!nipotan
おひさしぶり};
# データファイルからの読込みを格納するハッシュ
my %data = ();
# データ取得
open FH, 'chikan.dat' || die $!;
while(<FH>){
next if /^\s*#/;
next if /^\s*$/;
chomp;
if(/^(.+?)\s*=\s*(.+)$/){
$data{$1} .= "\0" if(exists $data{$1});
$data{$1} .= $2;
}
}
close FH;
# 置換処理
map{
$string =~ s/\Q$_\E/$data{REPLACED}/g
}(split /\0/, $data{TARGET});
# 画面出力
print $string;
---
こんなんでどうでしょう?
No.2
- 回答日時:
「前後のデータ」ですか。
。。以下サンプルです
[chikan.dat]
---
# 置換対象の前の文字
PREVIOUS = これは
# 置換対象の後ろの文字
BACK = データです
# 置換後の文字
REPLACED = ほげほげ~
---
[chikan.pl]
---
# 元の文字列
my $string = 'これは元の文章が記載されたデータです';
# データファイルからの読込みを格納するハッシュ
my %data = ();
# データ取得
open FH, 'chikan.dat' || die $!;
while(<FH>){
next if /^\s*#/;
next if /^\s*$/;
chomp;
$data{$1} = $2 if /^(.+?)\s*=\s*(.+)$/
}
close FH;
# 置換処理
$string =~
s{(\Q$data{PREVIOUS}\E)(?:.*?)(\Q$data{BACK}\E)}
{$1$data{REPLACED}$2}g;
# 画面出力
print $string;
---
こんなんでどーでしょう?
この回答への補足
すみません 質問の仕方に問題があったようです
ある文字列の特定の単語を別の単語に置き換えたいです
そのとき置き換える単語は複数あってそれの一覧をファイルから読めるようにしたいのですがどうしたらよいでしょう?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TeraPadエディターの操作方法に...
-
ペプシコーラとコカ・コーラとD...
-
#!/usr/bin/perlで書きだしたCG...
-
perlのflock関数でロックをかけ...
-
Perlで時間の計算
-
VBA変数をFunction.VLookupの戻...
-
perl の open について教えてく...
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
Perlのエラーについてご教授く...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
perlのrequireの動き方について...
-
perlの構文でカンマの意味が分...
-
perlについての質問
-
perlをバージョンアップしたら...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストファイルで提出とは?
-
openした後、closeしないでプロ...
-
Perlのエラーについてご教授く...
-
INDIRECT 横に再度抽出したい
-
フローチャート 九九
-
perl の open について教えてく...
-
perlをバージョンアップしたら...
-
perlで2次元配列をサブルーチ...
-
perl 正規表現でエラー
-
bashスクリプト
-
perlでリテラル値はメモリにど...
-
perlについての質問
-
Perlで時間の計算
-
perlのrequireの動き方について...
-
perl このテキストファイルを簡...
-
Wallpaper Engineでおすすめの...
-
Perlで同じフォルダにある任意...
-
perlで複数のファイルの処理に...
-
#!/usr/bin/perlで書きだしたCG...
-
perlのflock関数でロックをかけ...
おすすめ情報