0

通貨値ごとに 3 位または 2 位の通貨値にコンマを追加したい: 出力は次のようになります。

1000 => 1000
10000 => 10,000
210000 => 2,10,000
2010000 => 20,10,000
12010000 => 1,20,10,000

Numeral.js プラグインを使用して変換を行っています。ただし、プラグインは 3 桁の後にのみカンマを追加します。出力は次のようになります。

入力 200,000,000 の場合は 200,000,000

これは私が使用しているコードです。

<script type="text/javascript">
        $(window).load(function() {
            $('.currency').keyup(function(event){
             if(event.which >= 37 && event.which <= 40){
                event.preventDefault();
             }
             var $this = $(this);
             var num = $this.val();
             var num2 = numeral(num).format('0,0[.]00');
             console.log(num2);
             $this.val(num2);
            });
        });
</script>

正規表現は気にしませんが、これを実行できるものは見つかりませんでした。

4

4 に答える 4

0
function numberWithCommas(x) 
{
    var parts = x.toString().split(".");
    parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    return parts.join(".");
}

これを試して...

于 2013-11-01T12:28:34.247 に答える
0

上記のコードを使用してこの変更を試してください

function numberWithCommas(x) 
{
    var parts = x.toString().split(".");
    parts[0] = parts[0].replace(/^(\d*)(\d\d)(\d\d\d$|\d\d\.)/g, "$1$2,$3");
    return parts.join(".");
}
于 2013-11-01T12:51:41.580 に答える
0

ここに1つの解決策があります、

最大 9 桁の jsfiddle サンプルで動作するはずです

function numberWithCommas(x) {
    var res = [], nr;
    x = x.split("").reverse().join("");
    nr = x.match(/[0-9]{1,3}/g);
    console.log("first split" , nr);
    if (x.length < 4) {return nr[0].split("").reverse().join('');}
    else if (x.length < 9) {
        res.push( nr.shift() );//last three digits
        //join and split the remainder at 2 digits

        nr = nr.join('').match(/[0-9]{1,2}/g);

        res = res.concat(nr);
        console.log(res);
        return res.join(',').split("").reverse().join("");
    } else {
        return nr.join(',').split("").reverse().join('');
    }
}
function handleInput(evt) {
    $('#result').text( numberWithCommas( $('#input').val() ));
}
$('#input').keyup(handleInput);
于 2013-11-01T13:41:27.457 に答える
0

whileループ内の文字列操作

var intPart = '12010000',
    i = intPart.length - 3,
    str = intPart.slice(-3);
if (i > 0) {
    while ((i-=2)>=0) {
        str = intPart.slice(i, i+2) + ',' + str;
    }
    if (i === -1) str = intPart.slice(0, 1) + ',' + str;
}
str; // "1,20,10,000"
于 2013-11-01T12:42:09.627 に答える