数値を3桁区切りで表示する

Rubyの書式設定では数値を文字列に変換した際に3桁区切りで表示する事はできないようです。Ruby逆引きハンドブックを調べると下記の通り正規表現を利用することで3桁区切りにすることができるそうですので試してみました。

[sourcecode language="Ruby"]

num = 1000 p num.to_s.gsub(/(?<=\d)(?=(?:\d{3})+(?!\d))/, ',')

num = 1000000 p num.to_s.gsub(/(?<=\d)(?=(?:\d{3})+(?!\d))/, ',')

(1...11000).each do |num| p (num + 0.001).to_s.gsub(/(?<=\d)(?=(?:\d{3})+(?!\d))/, ',') end

--- 実行結果 "1,000" "1,000,000" "1.001" "2.001" "3.001" "4.001" "5.001" "6.001" "7.001" "8.001" "9.001" "10.001" "11.001" "12.001" ... "999.001" "1,000.001" "1,001.001" "1,002.001" "1,003.001" ... "10,999.001"

[/sourcecode]

こんな感じでうまく処理できるわけですね。最近正規表現を利用する機会が多くなってきました…。