js實現的用指定字元每隔指定位數分割字串

antzone發表於2017-04-03

本章節分享一段程式碼例項,它實現使用指定字元每隔指定位數分割字串的功能。

其實這樣的功能應用非常的廣泛,最為常見的就是數字千分位分割效果,例如1,231,513。

當然這裡不僅僅是針對數字,可以針對其他任何字串。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
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()一章節。

相關文章