2012-11-13 95 views
0

我在格式化我的號碼時遇到問題。我在這個論壇上找到了一個腳本,我將在這個文本下面展示。它確實與逗號一起工作,但是當我添加像10000000.00這樣的數字時,它將變爲10000000,00,但如果我添加一個數字如10333333.00,它將變爲:10 33 33 33,00,這不是我想要的。我想要我的號碼格式是這樣的:10 333 333,00數字格式化javascript

我一直在尋找一個很長的解決方案。我試圖改變正則表達式,但我不是很好,但正則表達式,所以我希望有人可以幫助我解決這個問題。

這是腳本:

function addCommas(nStr) 
{ 
    nStr += ''; 
    var x = nStr.split('.'); 
    var x1 = x[0]; 
    var x2 = x.length > 1 ? ',' + x[1] : ''; 
    var rgx = /(\d+)(\d+{3})/; 
    while (rgx.test(x1)) { 
     x1 = x1.replace(rgx, '$1' + ' ' + '$2'); 
    } 
    return x1 + x2; 
} 
+3

http://ntt.cc/2008/04/25/6-very-basic-but-very-useful-javascript-number-format-functions-for-web-developers.html –

+0

請始終鏈接到張貼您發現片段的地方 - 但是謝謝您告訴我們您已經複製了它:-) – Bergi

回答

0
var tests = 
[ 
3141, 
314159, 
31415926, 
10000000.001, 
10333333.002, 
42121.1415926535 
], 
res, 
i; 

function addCommas(nStr) 
{ 
    nStr += ''; 
    var x = nStr.split('.'); 
    var x1 = x[0]; 
    var x2 = x.length > 1 ? ',' + x[1] : ''; 
    var rgx = /(\d+)(\d{3})/; 
    while (rgx.test(x1)) { 
     x1 = x1.replace(rgx, '$1 $2'); 
    } 
    return x1 + x2; 
} 

for (i = 0; i < tests.length; i++) 
{ 
    document.write(addCommas(tests[i]) + '<br>'); 
} 

\d+{3}很奇怪,並通過JSLint的拒絕(而不是工作在Firefox)。

JSFiddle上測試的代碼。