Elixirに数を3桁カンマ区切りで表示する関数ないかなぁ、ありそうな気がするんだけどなぁ。
と思いつつ探しても見つからないかったので正規表現で無理やりやってみました。
やりたい事
3桁以上の数を3桁カンマ区切りで表示する。
例:1234567 -> 1,234,567
作成したコード
input = "1234567"
Regex.replace(~r/(\d)(?=(\d\d\d)+(?!\d))/, input, "\\g{1},")
iex(1)> input = "1234567"
"1234567"
iex(2)> Regex.replace(~r/(\d)(?=(\d\d\d)+(?!\d))/, input, "\\g{1},")
"1,234,567"
JavaScriptだとtoLocaleString()とか言うのがあるらしいんだけどなぁ。
ちなみに
numberというライブラリをインストールすると
Number.Delimit.number_to_delimited/2という関数を使用して変換できるみたいです。
(試してはいない。)
参考
https://www.yoheim.net/blog.php?q=20190702
https://hexdocs.pm/elixir/1.13/Regex.html#replace/4
https://elixircasts.io/formatting-numbers
https://hexdocs.pm/number/Number.Delimit.html