数字添加逗号分隔符

将一个数字作为参数,返回一个字符串,把整数部分从右到左每三位数添加一个逗号,如:12000000.11 转化为 12,000,000.11。

先看一种简洁的写法 ,这种写法要求对JS正则表达式较为深刻的理解。
废话不说,来看代码:

方法一

function numCommaFormat(number) {
  var arr = number.toString().split(".");
  var newNum  = arr[0].replace(/(?!\b)(?=(\d{3})+$)/g, ",");
  arr[0] = newNum;
  return arr.join(".");
}

(?=x) 正向肯定查找。

例如,/Jack(?=Sprat)/会匹配到'Jack'仅仅当它后面跟着'Sprat'。/Jack(?=Sprat|Frost)/匹配‘Jack’仅仅当它后面跟着'Sprat'或者是‘Frost’。但是‘Sprat’和‘Frost’都不是匹配结果的一部分。

(?!x) 正向否定查找。

例如,/\d+(?!.)/匹配一个数字仅仅当这个数字后面没有跟小数点的时候。正则表达式/\d+(?!.)/.exec("3.141")匹配‘141’但是不是‘3.141’。

方法二

function commafy (num) {
  var prefix = num < 0 ? "-" : "";
  num  = Math.abs(num).toString();
  var arr = num.split(".");
  var prev = arr[0].split("").reverse();
  var newPrev = [];
  
  for(var i = 0; i< prev.length; i++) {
    newPrev.unshift(prev[i]);
    if(i%3 == 2 &&  i < (prev.length -1)) {
      newPrev.unshift(",")
    }
  }
  
  arr[0] = newPrev.join("");
  return prefix + arr.join(".")
}

方法二就比较容易理解,但是相对于第一种就比较繁琐。
看个人喜好,我比较倾向于方法一。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容