数値を3桁ずつカンマで区切って整形するには、数値をいったん文字列に変換した上で、String#gsub
で正規表現による置換を行えば良い。以下はこの方法で数値をカンマ区切りで整形する例である。
num = 1234567890
p num.to_s.gsub(/(\d)(?=\d{3}+$)/, '\\1,')
この(\d)(?=\d{3}+$)
という少し複雑な正規表現は、末尾から3n + 1番目の数値1桁にマッチするものだ。末尾から3n + 1番目の数値だけにマッチさせるため、まず3n個の数値を(?=\d{3}+$)
という肯定先読みで処理している。