我想根据货币值在第3或第2位添加逗号到我的货币值: 输出应该是这样的:
1000 => 1000
10000 => 10,000
210000 => 2,10,000
2010000 => 20,10,000
12010000 => 1,20,10,000
我正在使用Numeral.js插件进行转换。但插件只在3位数后添加逗号。输出如下:
输入200000000 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>
我不介意正则表达式,但我找不到任何可以做到这一点。
答案 0 :(得分:0)
function numberWithCommas(x)
{
var parts = x.toString().split(".");
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
return parts.join(".");
}
试试这个......
答案 1 :(得分: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"
答案 2 :(得分: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(".");
}
答案 3 :(得分:0)
这是一个解决方案,
最多可以处理9位jsfiddle sample
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);