• ベストアンサー

文字列を置換え

ある特定の文字列を別の文字列に置き換えたいのですが その置き換える前後のデータをファイルから読み込むようにしたいのですが どのようにしたらよいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • nipotan
  • ベストアンサー率59% (134/227)
回答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; --- こんなんでどうでしょう?

ryuta_mo
質問者

お礼

ありがとうございます 無事解決しました

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • nipotan
  • ベストアンサー率59% (134/227)
回答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; --- こんなんでどーでしょう?

ryuta_mo
質問者

補足

すみません 質問の仕方に問題があったようです ある文字列の特定の単語を別の単語に置き換えたいです そのとき置き換える単語は複数あってそれの一覧をファイルから読めるようにしたいのですがどうしたらよいでしょう?

全文を見る
すると、全ての回答が全文表示されます。
  • kz2960
  • ベストアンサー率21% (33/154)
回答No.1

考え方を少しかえれば出来ると思います。 開発言語が不明なので文章で甘く説明出来るか?疑問ですが。 変数を宣言  SV(3)、DT 読込み  DTへ 変数移動  SV(3)=SV(2)  SV(2)=SV(1)  SV(1)=DT 比較  SV(2)の内容が文字列と比較すれば  前後(1、3)で解決できませんか?

ryuta_mo
質問者

お礼

ありがとうございます

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 文字列の比較

    現在Cでプログラムをつくっているのですが いきずまってしまいました。 1.テキストファイルを読み込む 2.書き込みファイルを開く 3.読み込んだデータを一行読み込んで   その行の特定の文字列があれば、   特定の文字列のみ取り出し、   書き込みファイルに書く。    4.次以降の行も同じ処理をする。    5.読み込み、書き込みファイルを閉じる。 と、こんな感じのプログラムなのですが、 3の特定の文字列をどのように取り出せばいいのかわかりません。 取り出したいのが数字ならば、if文でできるのですが 文字列の場合は、どうなんでしょうか。 例えば、「MOJIRETU11」という取り出したいとき 数字と同じようにIF文を使用することは、できるのでしょうか。

  • エクセル ある文字列を入れるとある文字列を返す

    エクセルでの関数、ど素人です。一応自分で調べたのですが、無理なので質問させていただきます。よろしくお願いいたします。 エクセルで、時刻ですが文字列として1745~2345までを手入力します(1745,とか2000とか2330とか。。。。。) 入れた文字列によって、すぐ横のセルに1745、1800、1815であれば8.00、1830からは0.25刻みで8.25、1845であれば8.50、1900であれば8.75。。。。2330であれば13.25、2345であれば13.50と言ったように、入力した文字列に対しある特定の文字列を自動的に入れたいのですが、どのような関数を使えばよろしいのでしょうか。 私が行おうとしたのは、別シートに文字列一覧を作り、if(特定のセル(手入力するセル)=別シートの1745~2345まで、横のセル=別シートの8.00、8.00、8.00~13.50まで)や、sumif、lookupを使ってみましたが撃沈です。 どなたか教えていただきたく、お願いいたします。

  • エクセルファイルから指定列の文字を

    エクセルファイルから指定列の文字を、別のテキストファイルの特定の場所へ順番に差し替えたいです。 【例】 A列の文字→元からあるテキストファイルの内容そのままに、●という特定文字へ、住所1、住所2、住所3・・・ というようにエクセルの列に従って、順番に差し替えてくれる方法ってあるでしょうか? コピペだと大変です(涙) よろしくお願いします。

  • 文字列置換

    文字列置換 htmlのbody内のタグではない(画面に表示される)特定の文字列を別の文字列に置き換えるコードはどう書けばいいのでしょうか?

  • C++で文字列の右端から特定の文字までの文字列を

    C++で文字列の中から,文字列の右端から特定の文字までの文字列を取り出すというものを作りたいと思っています。 右端から○文字取り出す。といった感じのコードは書けるのですが、特定の文字まで、というのがどうもうまくいきません。こちら、良いアドバイスをいただける方がいましたらよろしくお願いします。 例:ファイル名を抽出 文字列\system32\notepad.exeからnotepad.exeの部分だけを取り出したい。というものです。 初めに見つけた\まで取り出す・・とやればよいのでしょうが、その方法が今ひとつ良くわからないので、どうかご助力お願いいたします。

  • エクセル-抽出したデータや文字列を消さない方法

    他のファイルから例えばVLOOKUP関数で数値や文字列を抽出する場合、そのファイルが消えた場合抽出したデータや文字列も消えてしまいます。ファイルが消えてもデータや文字列を残すには別のセルにコピーして形式を選択して貼り付ければよいのですが、そうしなくても簡単に別のセルに数値や文字列として残す方法はないでしょうか。回答よろしくお願いいたします。

  • ある文字列を含む行の抽出

    お世話になります。 いくつかのテキストファイルがあり、それらのファイルのなかの、特定の文字列を含む行をすべて抽出して、別ファイルに集めて保存するようなことを、自動的に行うことはできますでしょうか?? officeソフトでできればよいのですが、ほかの方法でもかまいません。 お願いいたします。

  • Bシェルでファイル中の文字列置換の方法について

    Bシェルで複数のファイルを読み込み、 ファイル中のデータの先頭から6バイトがある特定の文字列の場合はそのままで、特定の文字列以外は空白に置換して出力したいのですが、 どのようにすればよいのでしょうか? お手数ですが、ご教示ください。

  • 多数のテキストファイルからの文字列の取り出し

    いま、わたしが持っているヴィジュアルベーシックは VB6.0です。PCはノートで、OSはXPです。 課題: あるフォルダーに1000くらいのテキストファイルがあって、 その各テキストファイルから たとえば、「「不特定長さの文字列1」」・・・・・・・・((不特定長さの文字列2)) の不特定長さの文字列1と不特定長さの文字列2を とりだし、 それをファイル名「まとめ表」というテキストファイルに ファイル名    文字列1   文字列2 ファイル1   あいうえお  かきくけこ ファイル2   さしすせそ  たちつてと  ・         ・        ・  ・         ・        ・ のように書き込むというプログラムを作成したいのですが、 できるでしょうか? できるとすると、 プログラムの およその考え方と 使用する命令語はどのようなものになりますか? ご回答をおまちしております。 よろしくおねがいいたしますm(__)m

  • 文字列によるファイルの特定とセルの参照

    エクセルで特定のセルの文字を結合して作成した文字列(ファイルパスとファイルを特定する文字列)を使って、指定したファイル(ブック)にあるセルを参照することはできますか。例えば、\\server\document\ファイル1という文字列をエクセルで作成してそのファイルにある特定のセルを参照したいのと考えています。どなたか教えてください。

妻にはAVを見てほしくない心理
このQ&Aのポイント
  • 20代後半人妻の私がAVを見ることについて、旦那は嫌がっています。
  • 旦那は私にバレていないと思い込んでいるため、見ていることに関しては見る気持ちを理解していると言っています。
  • しかし、私が1人で見ている時には浮気と言われ、他の男を見られるのが嫌だと言われるようになりました。
回答を見る