• ベストアンサー

textファイルにある文字列の置換について

すみません。 PERL初心者のものですが教えてください。 例えば、a.txtに以下の文字があるとします。 1234567,1111,9,8 1234568,1122,0,5 .... この時、「9」と「0」を文字列 9を"あいうえお" 0を"さしすせそ" と置換したい場合、どのように文字列を置換すれば良いのか ご教授いただけると幸いです。 既に他の方が質問済みでしたら済みません。

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

普通は個別に置換するでしょうが, ハッシュを使っていいなら 1回で置換できます. s/[09]/$substituted{$&}/eg; のような感じ, かな? 無名ハッシュでもいいと思うけど自信なし.

MORI0804
質問者

お礼

ありがとうございます。 配列、substr関数を利用し解決することが できました。 ありがとうございました。

その他の回答 (2)

  • G-sun
  • ベストアンサー率66% (2/3)
回答No.3

カンマで区切られたデータの一部を置換したいのか、単純に文字列を 置き換えるのかによって変わると思います。 12345679,1111,9,8 の場合単純に考えたら 1234567あいうえお,1111,あいうえお,8 となってしまいます。 文字を文字に置換したいのか、数値を文字に置換したいのかも明確に してもらえるとアドバイスしやすいです。 文字列の単純置換の場合は、ファイルオープンして while($str=<IN>){ $str =~ s/9/あいうえお/g; print $str."\n"; } 数値の場合は、まずカンマをセパレータにして分割してから while($str=<IN>){ @val = split(/\,/,$str); foreach $key (@val){ if($key==9) { $key="あいうえお"; } print "$key"."\n"; } } ちょっと出先なので検証してませんが、流れはこんな感じでしょうか・・・

MORI0804
質問者

お礼

1234567,1111,9,8 ↓ 1234567,1111,あいうえお,8 とやりたかったのですが、 解決することができました。 ありがとうございましたm(_ _)m

noname#39970
noname#39970
回答No.1
MORI0804
質問者

お礼

URLのリンクありがとうございました。 参考とさせていただき 無事解決することが出来ました。

関連するQ&A

専門家に質問してみよう