Add comma to numbers every three digits
如何使用jQuery使用逗号分隔符每三位数格式化数字?
例如:
1 2 3 4 5 6 7 | ╔═══════════╦═════════════╗ ║ Input ║ Output ║ ╠═══════════╬═════════════╣ ║ 298 ║ 298 ║ ║ 2984 ║ 2,984 ║ ║ 297312984 ║ 297,312,984 ║ ╚═══════════╩═════════════╝ |
@Paul Creasey有最简单的解决方案作为正则表达式,但这里它是一个简单的jQuery插件:
1 2 3 4 5 | $.fn.digits = function(){ return this.each(function(){ $(this).text( $(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1,") ); }) } |
然后你可以像这样使用它:
1 | $("span.numbers").digits(); |
你可以使用
1 2 3 | var number = 1557564534; document.body.innerHTML = number.toLocaleString(); // 1,557,564,534 |
如果你正在使用正则表达式,那就是这样的东西,不确定替换的确切语法!
1 | MyNumberAsString.replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1,"); |
你可以试试NumberFormatter。
1 | $(this).format({format:"#,###.00", locale:"us"}); |
它还支持不同的语言环境,当然包括US。
以下是如何使用它的一个非常简单的示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <html> <head> <script type="text/javascript" src="jquery.js"> <script type="text/javascript" src="jquery.numberformatter.js"> $(document).ready(function() { $(".numbers").each(function() { $(this).format({format:"#,###", locale:"us"}); }); }); </head> <body> 1000 2000000 </body> </html> |
输出:
1 2 | 1,000 2,000,000 |
这不是jQuery,但它适用于我。取自本网站。
1 2 3 4 5 6 7 8 9 10 11 | function addCommas(nStr) { nStr += ''; x = nStr.split('.'); x1 = x[0]; x2 = x.length > 1 ? '.' + x[1] : ''; var rgx = /(\d+)(\d{3})/; while (rgx.test(x1)) { x1 = x1.replace(rgx, '$1' + ',' + '$2'); } return x1 + x2; } |
2016答案:
Javascript有这个功能,所以不需要Jquery。
1 | yournumber.toLocaleString("en"); |
使用函数Number();
1 2 3 4 5 6 7 8 9 10 11 12 13 | $(function() { var price1 = 1000; var price2 = 500000; var price3 = 15245000; $("span#s1").html(Number(price1).toLocaleString('en')); $("span#s2").html(Number(price2).toLocaleString('en')); $("span#s3").html(Number(price3).toLocaleString('en')); console.log(Number(price).toLocaleString('en')); }); |
1 2 3 4 5 | <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"> <span id="s1"></span><br /> <span id="s2"></span><br /> <span id="s3"></span><br /> |
更彻底的解决方案
其核心是
-
整数:
1000 => '1,000' -
字符串:
'1000' => '1,000' -
对于字符串:
-
在十进制之后保留零:
10000.00 => '10,000.00' -
丢弃十进制前的前导零:
'01000.00 => '1,000.00' -
十进制后不添加逗号:
'1000.00000' => '1,000.00000' -
保留前导
- 或+ :'-1000.0000' => '-1,000.000' -
返回未修改的包含非数字的字符串:
'1000k' => '1000k'
-
在十进制之后保留零:
以下功能可以完成上述所有操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | addCommas = function(input){ // If the regex doesn't match, `replace` returns the string unmodified return (input.toString()).replace( // Each parentheses group (or 'capture') in this regex becomes an argument // to the function; in this case, every argument after 'match' /^([-+]?)(0?)(\d+)(.?)(\d+)$/g, function(match, sign, zeros, before, decimal, after) { // Less obtrusive than adding 'reverse' method on all strings var reverseString = function(string) { return string.split('').reverse().join(''); }; // Insert commas every three characters from the right var insertCommas = function(string) { // Reverse, because it's easier to do things from the left var reversed = reverseString(string); // Add commas every three characters var reversedWithCommas = reversed.match(/.{1,3}/g).join(','); // Reverse again (back to normal) return reverseString(reversedWithCommas); }; // If there was no decimal, the last capture grabs the final digit, so // we have to put it back together with the 'before' substring return sign + (decimal ? insertCommas(before) + decimal + after : insertCommas(before + after)); } ); }; |
你可以在像这样的jQuery插件中使用它:
1 2 3 4 5 | $.fn.addCommas = function() { $(this).each(function(){ $(this).text(addCommas($(this).text())); }); }; |
您还可以查看jquery FormatCurrency插件(我是作者);它也支持多个语言环境,但可能具有您不需要的货币支持的开销。
1 | $(this).formatCurrency({ symbol: '', roundToDecimalPlace: 0 }); |
这是我的javascript,仅在firefox和chrome上测试过
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <html> <header> function addCommas(str){ return str.replace(/^0+/, '').replace(/\D/g,"").replace(/\B(?=(\d{3})+(?!\d))/g,","); } function test(){ var val = document.getElementById('test').value; document.getElementById('test').value = addCommas(val); } </header> <body> <input id="test" onkeyup="test();"> </body> </html> |
非常简单的方法是使用
1 2 3 | tot = Rs.1402598 //Result : Rs.1402598 tot.toLocaleString() //Result : Rs.1,402,598 |