- ベストアンサー
○文字目に文字挿入
お世話になっています。 正規表現の文字置換s///gを使って数字の3桁目に-を挿入したいですが、どうしたらいいのかわかりません。 どなたか教えていただけないでしょうか。 5770001 ↓ 577-0001 にしたいのでしが…
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
試してないのですが s/(.{3})(.*)/$1-$2/; でよいはずです。 数字確定ならば\dでも可。
その他の回答 (2)
- leaz024
- ベストアンサー率75% (398/526)
回答No.3
既に解決済みのようですが、いろんな方法を知っておいて損はないので、別の例を1つ。 $zip = "5770001"; substr($zip, 3, 0) = "-"; print $zip; # 577-0001 substr は左辺値(代入される側)にもでき、 substr($string, $offset, $length) = $replace; とすることで、$string の $offset バイト目から $length バイト分を $replace に置き換えることができます。 上の例はこれを利用し、$length を 0 とすることで挿入を行っています。 # Perl5.005以降なら、substr($string, $offset, $length, $replace) と書くこともできます。
- Dpop
- ベストアンサー率51% (279/544)
回答No.1
#!/usr/bin/perl $c = '5770001'; $c =~ s/(\d\d\d)(\d\d\d\d)/$1\-$2/; print $c. "\n"; これでどうでしょうか?
質問者
お礼
即レスありがとうございます。 試した結果うまく動きました。
お礼
ありがとうございます。 汎用性があり、よかったです。