我有这些数字
10999
以及8094
和456
我想要做的就是在正确的位置添加一个逗号,如果它需要它,所以它看起来像这样
10,999
以及8,094
和456
这些都在像<p class="points">10999</p>
等的p标签中。
可以吗?
我已经在其他帖子http://jsfiddle.net/pdWTU/1/的帮助下尝试过了,但似乎无法让它发挥作用
由于
杰米
更新
稍微弄清楚并设法在这里弄明白http://jsfiddle.net/W5jwY/1/
要查看新的Globalization插件以获得更好的方法
由于
杰米
答案 0 :(得分:136)
适用于所有浏览器,这就是您所需要的。
function commaSeparateNumber(val){
while (/(\d+)(\d{3})/.test(val.toString())){
val = val.toString().replace(/(\d+)(\d{3})/, '$1'+','+'$2');
}
return val;
}
写这个是紧凑的,并且到目前为止,感谢正则表达式。这是直接的JS,但您可以在jQuery中使用它:
$('#elementID').html(commaSeparateNumber(1234567890));
或
$('#inputID').val(commaSeparateNumber(1234567890));
答案 1 :(得分:125)
Number(10000).toLocaleString('en'); // "10,000"
答案 2 :(得分:2)
Timothy Pirez的回答是非常正确的,但是如果你需要用逗号替换这些数字作为用户在textfield中的类型,你可能想要使用Keyup功能。
$('#textfield').live('keyup', function (event) {
var value=$('#textfield').val();
if(event.which >= 37 && event.which <= 40){
event.preventDefault();
}
var newvalue=value.replace(/,/g, '');
var valuewithcomma=Number(newvalue).toLocaleString('en');
$('#textfield').val(valuewithcomma);
});
<form><input type="text" id="textfield" ></form>
答案 3 :(得分:1)
查看最近发布的 Globalization plugin 到微软的jQuery
答案 4 :(得分:1)
function delimitNumbers(str) {
return (str + "").replace(/\b(\d+)((\.\d+)*)\b/g, function(a, b, c) {
return (b.charAt(0) > 0 && !(c || ".").lastIndexOf(".") ? b.replace(/(\d)(?=(\d{3})+$)/g, "$1,") : b) + c;
});
}
alert(delimitNumbers(1234567890));
答案 5 :(得分:0)
我猜你正在进行某种本地化,所以看看this script。
答案 6 :(得分:0)
看看Numeral.js。它可以格式化数字,货币,百分比并支持本地化。
答案 7 :(得分:0)
使用toLocaleString 引用https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString
function formatComma(value, sep = 0) {
return Number(value).toLocaleString("ja-JP", { style: "currency", currency: "JPY", minimumFractionDigits: sep });
}
console.log(formatComma(123456789, 2)); // ¥123,456,789.00
console.log(formatComma(123456789, 0)); // ¥123,456,789
console.log(formatComma(1234, 0)); // ¥1,234
答案 8 :(得分:-1)
另一种方法:
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;
}
var a = addCommas(10000.00);
alert(a);
另一个惊人的插件: http://www.teamdf.com/web/jquery-number-format/178/
答案 9 :(得分:-1)
另一种方法:
function addCommas(n){
var s = "",
r;
while (n) {
r = n % 1000;
s = r + s;
n = (n - r)/1000;
s = (n ? "," : "") + s;
}
return s;
}
alert(addCommas(12345678));
答案 10 :(得分:-1)
这是我在@Timothy Perez评论中提供的@ baacke小提琴的coffeescript版本
class Helpers
@intComma: (number) ->
# remove any existing commas
comma = /,/g
val = number.toString().replace comma, ''
# separate the decimals
valSplit = val.split '.'
integer = valSplit[0].toString()
expression = /(\d+)(\d{3})/
while expression.test(integer)
withComma = "$1,$2"
integer = integer.toString().replace expression, withComma
# recombine with decimals if any
val = integer
if valSplit.length == 2
val = "#{val}.#{valSplit[1]}"
return val