初歩的な質問で申し訳ありませんが、ご教授ください。
金額の文字列でよくありますが、3桁ずつカンマで区切ります。
その際の処理は、正規表現による置換が一般的だと思います。
3つの言語で例を挙げます。
■PHP
$string = '1234567890';
$string = preg_replace('/(\d)(?=(\d{3})+(?!\d))/', '$1,', $string);
■JavaScript
var string = '1234567890';
string = string.replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,');
この2つについて、正規表現の「/(\d)(?=(\d{3})+(?!\d))/」の部分は、
数字1文字で始まり、その後に数字3文字が1回以上続き、その後に数字ではない文字がある、という
意味であることはわかるのですが、「$1,」がどうしてこれで文字列全体が3桁のカンマ区切りになるのか、
わかりません。
「$1」は最初にマッチした数字、例では「1」を表すと思うので、結果は「1,234567890」になるのかな、と
誤解しています。
■Ruby
string = '1234567890'
string = string.reverse.gsub(/(\d{3})(?=\d)/, '\1,').reverse
こちらは文字列を反転させて後ろから置換するしかないそうですが、同様に「\1,」で置換しています。
正規表現についてきちんと勉強すべきことは重々承知した上で、ご教授いただけると助かります。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/10/10 06:42
2019/10/10 06:49
2019/10/10 06:59
退会済みユーザー
2019/10/10 08:17