🔢

数値を金額表示の文字列に変換するには?

Status
関数説明
属性名
金額表示(replace複数回)、金額表示(長さを調整)
返り値
String
逆引きNotionDB
関連するもの
しーさんからのお題です。早速やってみましょう。
  1. 最も簡単なのはreplace を再帰的に使うことで下から,を埋めていく感じです。
    1. let(num_str, /* 数値を文字列に変換 */ prop("数値").format() /* 末尾の4桁の数字の間に,を挿入 */ .replace("(\d)(\d{3})$", "$1,$2") /* その前の4桁の数字の間に,を挿入 */ .replace("(\d)(\d{3}),", "$1,$2,") /* その前の4桁の数字の間に,を挿入 */ .replace("(\d)(\d{3}),", "$1,$2,") /* その前の4桁の数字の間に,を挿入 */ .replace("(\d)(\d{3}),", "$1,$2,") /* その前の4桁の数字の間に,を挿入 */ .replace("(\d)(\d{3}),", "$1,$2,") /* その前の4桁の数字の間に,を挿入 */ .replace("(\d)(\d{3}),", "$1,$2,"), "¥" + num_str )
  1. 長さを3の倍数にして replaceAll を使うこともできます。
    1. /* 数値の先頭に3つの@を付加(自動的に文字列に変換) */ ("@@@" + prop("数値")) /* 3の倍数の長さになるように substring で切り出し */ .substring(prop("数値").length() % 3) /* 頭から3桁ごとに, を付加 */ .replaceAll("(.{3})", "$1,") /* 頭の@と,(ある場合だけ)を¥マークに置換 */ .replace("^@+,?", "¥") /* 末尾の , を削除 */ .replace(",$", "")
金額
名前
数値
金額表示(replace複数回)
金額表示(長さを調整)
0
¥0
¥
1
¥1
¥1
12
¥12
¥12
123
¥123
¥123
1234
¥1,234
¥1,234
12345
¥12,345
¥12,345
123456
¥123,456
¥123,456
1234567
¥1,234,567
¥1,234,567
12345678
¥12,345,678
¥12,345,678
123456789
¥123,456,789
¥123,456,789
1234567890
¥1,234,567,890
¥1,234,567,890
12345678901
¥12,345,678,901
¥12,345,678,901
123456789012
¥123,456,789,012
¥123,456,789,012
1234567890123
¥1,234,567,890,123
¥1,234,567,890,123
12345678901234
¥12,345,678,901,234
¥12,345,678,901,234
123456789012345
¥123,456,789,012,345
¥123,456,789,012,345
1234567890123456
¥1,234,567,890,123,456
¥1,234,567,890,123,456
12345678901234568
¥12,345,678,901,234,568
¥12,345,678,901,234,568
123456789012345680
¥123,456,789,012,345,680
¥123,456,789,012,345,680
1234567890123456800
¥1,234,567,890,123,456,800
¥1,234,567,890,123,456,800
12345678901234567000
¥12,345,678,901,234,567,000
¥12,345,678,901,234,567,000