アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

どなたか教えていただけないでしょうか。

5770001

577-0001

にしたいのでしが…

A 回答 (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) と書くこともできます。
    • good
    • 3

試してないのですが


s/(.{3})(.*)/$1-$2/;
でよいはずです。

数字確定ならば\dでも可。
    • good
    • 1
この回答へのお礼

ありがとうございます。

汎用性があり、よかったです。

お礼日時:2004/10/14 11:53

#!/usr/bin/perl



$c = '5770001';

$c =~ s/(\d\d\d)(\d\d\d\d)/$1\-$2/;
print $c. "\n";

これでどうでしょうか?
    • good
    • 1
この回答へのお礼

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

お礼日時:2004/10/14 11:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!