[JavaScript] 数値から桁区切りの価格の文字列を出したい

2014/04/25

こんにちは。きんくまです。
またまた小ネタというかスニペットです。

前に価格の文字から数値を出したのですが
> [JavaScript] 価格の文字列から価格の数値を出したい
この逆をやろうと思いました。

例えば
1234567 -> “1,234,567”
みたいな感じに桁区切りの文字列を出したいです。

それでTypeScriptでこの前のやつと合わせてクラス化してみました。
アルゴリズム的に簡単になるように、配列を反転させて、下から数えて3桁ずつ「,」の文字を追加してるけど、きっともっと早いやり方はあると思う。
でも実用上問題ないので、このまま使うのだ。

module kk{
    export class PriceUtil{
        static PRICE_DELIMITER:string = ",";
        constructor(){

        }

        //文字列から数値をえる
        static getPriceFromString(priceStr:string):number{
            var reg:RegExp = /[^\-0-9]+/gi;
            var convertedStr:string = priceStr.replace(reg, "");
            var price:number = parseInt(convertedStr, 10);
            return price;
        }

        //数値から文字列をえる
        static getDelimitedPriceString(price:number):string{
            var isMinus:boolean = price < 0;
            if(isMinus){
                price *= -1;
            }
            var priceStr:string = price + "";
            if(priceStr.length < 1){
                return "";
            }
            var priceStrs:string[] = priceStr.split("").reverse();
            var cnt:number = 0;
            var len:number = priceStrs.length;
            while(cnt < len){
                if(cnt != 0 && cnt % 3 == 0){
                   priceStrs[cnt] = priceStrs[cnt] + PriceUtil.PRICE_DELIMITER;
                }
                cnt++;
            }
            var delimitedPriceStr = priceStrs.reverse().join("");
            if(isMinus){
                delimitedPriceStr = "-" + delimitedPriceStr;
            }
            return delimitedPriceStr;
        }
    }
}

うまくいってるか確認します

            var price:number[] = [
                1, 12, 123, 1234, 12345, 123456, 1234567, 12345678
                ,-1, -12, -123, -1234, -12345, -123456, -1234567, -12345678
                ];
            for(var i:number = 0, len:number = price.length; i < len; i++) {
                var str:string = kk.PriceUtil.getDelimitedPriceString(price[i]);
                console.log(price[i], str);
            }

出力

1 "1"
12 "12"
123 "123"
1234 "1,234"
12345 "12,345"
123456 "123,456"
1234567 "1,234,567"
12345678 "12,345,678"
-1 "-1"
-12 "-12"
-123 "-123"
-1234 "-1,234"
-12345 "-12,345"
-123456 "-123,456"
-1234567 "-1,234,567"
-12345678 "-12,345,678" 

うまくいってるっぽいです

LINEで送る
Pocket

自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

LINEスタンプ作りました!
毎日使える。とぼけたウサギ。LINEスタンプ販売中! 毎日使える。とぼけたウサギ

ページトップへ戻る