我试图在JavaScript中打印一个整数,用逗号作为千位分隔符。例如,我想将数字1234567显示为“1234567”。我该怎么做?
我是这样做的:
函数编号WithCommas(x){x=x.toString();var模式=/(-?\d+)(\d{3})/;while(模式测试(x))x=x.replace(模式,“$1,$2”);返回x;}console.log(数字与逗号(1000))
有没有更简单或更优雅的方法?如果它也可以与浮点运算一起使用,那就很好了,但这不是必须的。它不需要特定于区域设置来决定句点和逗号。
对于任何喜欢1行和单个正则表达式,但不想使用split()的人,这里有一个来自其他答案的正则表达式的增强版本,它处理(忽略)小数点:
var formatted = (x+'').replace(/(\..*)$|(\d)(?=(\d{3})+(?!\d))/g, (digit, fract) => fract || digit + ',');
正则表达式首先匹配以文字“.”开头的子字符串,并将其替换为自身(“fract”),然后匹配任何数字,后跟3位数的倍数,并将“,”放在其后。
例如,x=12345678.12345678将给出formated=“12345678.12345 678”。
您可以在Number原型上创建一个函数
Number.prototype.format = function (s, d) {
return (
this.toString()
.split(".")
.map((n, i) =>
i
? n
: n
.split("")
.map((n, i) => (i % 3 || !i ? n : s + n))
.join("")
)
.join(d)
);
};
console.log((8800.00).format(',', '.'))
// 8,880.00
// French notation
console.log((8800.00).format(' ', ','))
// 8 880,00