お会計などではよく桁を把握しやすいように3桁ごとにカンマ区切りをするのが一般的だが、一発変換する関数はない。
数字にカンマを付ける
もし、numeric型(int型)ならto_sで文字列に変換する。下記の方法は一旦文字を反転させて後ろから3文字毎にカンマを入れて、文字をもう一度反転させる。桁数を把握していれば頭からカンマを入れられるが、桁数把握の処理を書くぐらいなら反転させて末尾からカンマを入れた方が必ず3文字毎なので簡潔に記述できる。
num = 1234567890 p num.to_s.reverse.gsub( /(\d{3})(?=\d)/, '\1,').reverse # "1,234,567,890"
数字のカンマを外す
今度はカンマがついている数字からカンマを外す。カンマを外す方法はカンマを探して除去すれば良いので、反転する必要はない。文字列から数値に戻すときはto_iで変換。
str = "1,234,567,890" str2 = str.gsub(/(\d{0,3}),(\d{3})/, '\1\2') # "1234567890" num = str2.to_i p num # 1234567890