- ベストアンサー
19800を19,800にする方法を教えて下さい。
19800を19,800にする方法をいろいろと考えましたがうまく行く方法が分かりませんでした。 置換する方法でもある文字列を検索し、置換する方法しか分からず文字数によって置換する方法などはないかと探りましたがわかりませんでした。 spliteを使う方法も考えましたが分からない状態です。 どうかご存知の方は教えて頂けないでしょうか?お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
以下の URL が参考になります。 一応転載すると # $num を3桁ごとにコンマで区切る(最速版) if ($num =~ /^[-+]?\d\d\d\d+/g) { for ($i = pos($num) - 3, $j = $num =~ /^[-+]/; $i > $j; $i -= 3) { substr($num, $i, 0) = ','; } } だから、以下のように関数化すればラクです。 --- sub sep3byte{ my $num = shift; if ($num =~ /^[-+]?\d\d\d\d+/g) { for (my $i = pos($num) - 3, my $j = $num =~ /^[-+]/; $i > $j; $i -= 3) { substr($num, $i, 0) = ','; } } $num; } my $num = 19800; $num = sep3byte($num); print $num; --- 結果 19,800
その他の回答 (1)
- gazy
- ベストアンサー率19% (13/66)
$numに数字が入っているとします。 次の1行で$numに3桁ごとの位取りのカンマが挿入されます。 1 while $num =~ s/(.*\d)(\d\d\d)/$1,$2/; 昔の「らくだ本」に出ていた方法ですが、スクリプトが短いので気に 入っています。