例えば、1950000000という数字を受け取って、19億5,000万にするとか、10058を受け取って1万58にするとか、そういうやつ
- 数字を文字列に変換する
- 正規表現のルールを定義する
- 元数字の文字列を、正規表現で4桁ずつ分割し配列にする
- 配列を順逆にする
- 配列をループする
- 配列をそれぞれ0,000の形式にconvertする
- index==0なら result = convert
- index=1なら result = convert + 万 + result
- index=2なら result = convert + 億 + result
このロジックをコードに落とすと以下になる
const formatNumberWithUnit = (amount: number) => {
const numberString = amount.toString();
const regex = /(\d{1,4})(?=(?:\d{4})+$)|(\d{1,4}$)/g;
let numberArray = numberString.match(regex);
if (numberArray) {
numberArray.reverse();
let result = '';
numberArray.forEach((item, index) => {
const changeNum = parseInt(item).toLocaleString("ja-JP");
switch(index) {
case 0:
changeNum > '0' ? result = changeNum : '';
break;
case 1:
result = `${changeNum}万${result}`;
break;
case 2:
result = `${changeNum}億${result}`;
break;
}
});
return result;
}
};