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()一章节。