Ruby Tips!

RubyのTipsを紹介します

数値をカンマ区切りで整形する

数値を3桁ずつカンマで区切って整形するには、数値をいったん文字列に変換した上で、String#gsub正規表現による置換を行えば良い。以下はこの方法で数値をカンマ区切りで整形する例である。

num = 1234567890
p num.to_s.gsub(/(\d)(?=\d{3}+$)/, '\\1,') #=> "1,234,567,890"

この(\d)(?=\d{3}+$)という少し複雑な正規表現は、末尾から3n + 1番目の数値1桁にマッチするものだ。末尾から3n + 1番目の数値だけにマッチさせるため、まず3n個の数値を(?=\d{3}+$)という肯定先読みで処理している。