HTML5网页设计

javaScript

JS实现的数字每隔三位加一个逗号分隔符

时间:2016-04-13 10:55来自:未知作者:user点击:
很多情况下可能会给长数字隔3位加一个逗号进行分割,那如何实现给长数字添加千位分隔符,即 13142222 --- 13,142,222 实现方法有很多种,可以用三位循环、字符串数组分隔,也可以使用正则。

很多情况下可能会给长数字隔3位加一个逗号进行分割,那如何实现给长数字添加千位分隔符,即 13142222 ---> 13,142,222 实现方法有很多种,可以用三位循环、字符串数组分隔,也可以使用正则。

方法一:

var cutStr=function(str){  
  var newStr=new Array(str.length+parseInt(str.length/3));   
  var strArray=str.split("");
  newStr[newStr.length-1]=strArray[strArray.length-1];   
  var currentIndex=strArray.length-1;   
  for(var i=newStr.length-1;i>=0;i--){   
    if((newStr.length-i)%4==0){   
      newStr[i]=",";   
    }  
    else{   
      newStr[i]=strArray[currentIndex--];   
    }   
  }   
  return newStr.join("")   
}  
var num=18000; 
console.log(cutStr(num+""));

以上代码实现了分隔要求,下面介绍一下它的实现过程。

一.代码注释:

  • 1.var newStr=new Array(str.length+parseInt(str.length/3)),创建一个数组对象,并将其长度设置为数字的长度和要添加分隔符个数之和,parseInt(str.length/3)可以计算出要添加的分隔符的个数。
  • 2.var strArray=str.split(""),将数字字符串转换为数组。
  • 3.newStr[newStr.length-1]=strArray[strArray.length-1],将newStr数组的最有一个元素设置为strArray数组的最后一个元素。
  • 4.var currentIndex=strArray.length-1,声明一个变量并将其值设置为数组的元素的最大索引值。
  • 5.for(var i=newStr.length-1;i>=0;i--),遍历数组的每一个元素,是从索引值最大的一个开始的。
  • 6.if((newStr.length-i)%4==0){newStr=","},如果和4取模为0,那么就说明此位置应该是一个分割符,于是就将newStr的值设置为逗号。
  • 7.else{newStr=strArray[currentIndex--]},如果不是则只进行普通的赋值,而不是添加分隔符。
  • 8.return newStr.join(""),将数组连接成字符串。

方法二:

利用js正则表达式来实现。代码如下:

function thousandBitSeparator(num) {
  return num && (num
    .toString().indexOf('.') != -1 ? num.toString().replace(/(\d)(?=(\d{3})+\.)/g, function($0, $1) {
      return $1 + ",";
    }) : num.toString().replace(/(\d)(?=(\d{3})+\b)/g, function($0, $1) {
      return $1 + ",";
    }));
}
console.log(thousandBitSeparator(200015464642222));

当前文章地址:http://www.shejicool.com/web/javaScript/682.html

阅完本篇文章?您还可以: 收藏本文 文章挑错 朋友推荐