使用jQuery或JS为印度数字添加逗号

Add commas to Indian numbers using jQuery or JS

本文关键字:数字 添加 jQuery JS 使用      更新时间:2023-09-26

我用d3来可视化数据,我用这个函数把数字从阿拉伯数字转换成印度数字(1> ١)

    function arNum(numb){
    var str     = numb.toString();
    var arabic  = {"0" : '٠', "1": '١',"2": '٢',"3": '٣',"4": '٤',"5": '٥',"6": '٦',"7": '٧',"8": '٨',"9": '٩'};
    var chars   = str.split("");
    var newnum  = new Array();
    for (var i = 0; i < chars.length; i++) {
        newnum[i] = arabic[ chars[i] ];
    }
    return newnum.join("");
}

效果非常好,然后我想用逗号来分隔数字,比如1000到1000,但是我需要用像这样的印度数字来完成:١,٠٠٠

所以我使用了这个函数,它可以处理阿拉伯数字123456789,但不能处理印度数字:

 function commaSeparateNumber(val){
    while (/('d+)('d{3})/.test(val.toString())){
      val = val.toString().replace(/('d+)('d{3})/, '$1'+','+'$2');
    }
    return val;
  }

所以请帮忙!

可以先在阿拉伯数字后面加上逗号,然后再转换成印度数字

我在您的JSfiddle中尝试了它http://jsfiddle.net/samehsubscription/F9zCK/,它工作得很好。像下面这样更新arNum函数:

function arNum(numb){
    var str     = numb.toString();
    while (/('d+)('d{3})/.test(str.toString())){
        str = str.toString().replace(/('d+)('d{3})/, '$1'+','+'$2');
    }
    var arabic  = {"0" : '٠', "1": '١',"2": '٢',"3": '٣',"4": '٤',"5": '٥',"6": '٦',"7": '٧',"8": '٨',"9": '٩'};
   var chars   = str.split("");
    var newnum  = new Array();
    for (var i = 0; i < chars.length; i++) {
        if(chars[i] == ",") newnum[i] = ",";
        else
        newnum[i] = arabic[ chars[i] ];
    }
    return newnum.join("");
}

您可以根据需要使用此函数或此函数的索引:

Number.prototype.NumberFormat = function (decimals, decPoint, thousandsSep) {
    decPoint = typeof decPoint !== 'undefined' ? decPoint : '.';
    thousandsSep = typeof thousandsSep !== 'undefined' ? thousandsSep : ',';
    var parts = this.toFixed(decimals).toString().split('.');
    parts[0] = parts[0].replace(/'B(?=('d{3})+(?!'d))/g, thousandsSep);
    return parts.join(decPoint);
};
Just call 
val = val.toString().NumberFormat(2);