• ベストアンサー

○文字目に文字挿入

お世話になっています。 正規表現の文字置換s///gを使って数字の3桁目に-を挿入したいですが、どうしたらいいのかわかりません。 どなたか教えていただけないでしょうか。 5770001 ↓ 577-0001 にしたいのでしが…

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

  • ベストアンサー
回答No.2

試してないのですが s/(.{3})(.*)/$1-$2/; でよいはずです。 数字確定ならば\dでも可。

saruyamamonki
質問者

お礼

ありがとうございます。 汎用性があり、よかったです。

その他の回答 (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"; これでどうでしょうか?

saruyamamonki
質問者

お礼

即レスありがとうございます。 試した結果うまく動きました。

関連するQ&A