- ベストアンサー
textファイルにある文字列の置換について
すみません。 PERL初心者のものですが教えてください。 例えば、a.txtに以下の文字があるとします。 1234567,1111,9,8 1234568,1122,0,5 .... この時、「9」と「0」を文字列 9を"あいうえお" 0を"さしすせそ" と置換したい場合、どのように文字列を置換すれば良いのか ご教授いただけると幸いです。 既に他の方が質問済みでしたら済みません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
普通は個別に置換するでしょうが, ハッシュを使っていいなら 1回で置換できます. s/[09]/$substituted{$&}/eg; のような感じ, かな? 無名ハッシュでもいいと思うけど自信なし.
その他の回答 (2)
- G-sun
- ベストアンサー率66% (2/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"; } } ちょっと出先なので検証してませんが、流れはこんな感じでしょうか・・・
お礼
1234567,1111,9,8 ↓ 1234567,1111,あいうえお,8 とやりたかったのですが、 解決することができました。 ありがとうございましたm(_ _)m
お礼
URLのリンクありがとうございました。 参考とさせていただき 無事解決することが出来ました。
お礼
ありがとうございます。 配列、substr関数を利用し解決することが できました。 ありがとうございました。