js实现的用指定字符每隔指定位数分割字符串

快乐打工仔 分类:实例代码

本章节分享一段代码实例,它实现使用指定字符每隔指定位数分割字符串的功能。

其实这样的功能应用非常的广泛,最为常见的就是数字千分位分割效果,例如1,231,513。

当然这里不仅仅是针对数字,可以针对其他任何字符串。

代码实例如下:

function insert_flg(str,flg,sn){
  str=str.replace(new RegExp(flg,"g"),"");
  var newstr="";
  var tmp;
  var len=str.length;//长度
  var num=len/sn;//分段数
  var Remainder=len%sn;
  var start;
  var end;
  //len%sn //能否完整分段 0:是
  for(i=0;i<num;i+=1){
    if (len%sn!=0){//不能完整分段
      start=(i-1)*sn+(i==0?0:1)*Remainder;
      end=i*sn+Remainder;
    }
    else{
      start=i*sn;
      end=(i+1)*sn;
    }
    start=start<0?0:start;
    if (end<=len){
      tmp=str.substring(start,end);
    }
    newstr+=(end>=len)?tmp:tmp+flg;
  }
  return newstr;
}
console.log(insert_flg("31415926",",",4));

上面的代码实现了我们的要求,下面介绍一下它的实现过程。

一.代码注释:

(1).function insert_flg(str,flg,sn){},此函数实现了分割效果,第一个参数要分割的字符串,第二个参数规定使用哪个字符分割字符串,第三个参数规定每隔几位进行一次分割。

(2).str=str.replace(new RegExp(flg,"g"),""),将字符串中与分割符相同的字符清空。

(3).var newstr="",变量用来存放最终的结果。

(4).var tmp,此变量用来存放截取的字符串。

(5).var len=str.length,获取字符串的长度。

(6).var num=len/sn,进行除法运算,计算出一个数字,数字的整数部分就是分段的数目。(7).var Remainder=len%sn,进行求余,获取不能进行一个完整分段的字符的数目。

(8).var start,用来存储截取的开始位置。

(9).var end,用来存储截取的结束位置。

(10).for(i=0;i<num;i+=1){

  if (len%sn!=0){//不能完整分段

    start=(i-1)*sn+(i==0?0:1)*Remainder;

    end=i*sn+Remainder;

  }

  else{

    start=i*sn;

    end=(i+1)*sn;

  }

  start=start<0?0:start;

  if (end<=len){

    tmp=str.substring(start,end);

  }

  newstr+=(end>=len)?tmp:tmp+flg;

}这个基本就是数学问题,因为是从字符串左侧进行截取的,所以字符串要分可以恰好都能截取,比如1234可以被2完整截取两次,12345则不能够被2完整截取。没没法表述,一个数学问题,有问题的可以跟帖留言。

二.相关阅读:

(1).replace()方法可以参阅正则表达式replace()函数一章节。

(2).RegExp()可以参阅正则表达式的创建一章节。

(3).substring()方法可以参阅javascript substring()一章节。

回复

我来回复
  • 暂无回复内容