javascript擷取字串程式碼例項

antzone發表於2017-03-22

本章節介紹一下如何利用javascript擷取指定長度的字串。

程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
function subString(str,len,hasDot){ 
  var newLength=0; 
  var newStr=""; 
  var chineseRegex=/[^\x00-\xff]/g; 
  var singleChar=""; 
  var strLength=str.replace(chineseRegex,"**").length;
  var strLength=str.replace(chineseRegex,"**").length; 
  for(var i=0;i<strLength;i++){ 
    singleChar=str.charAt(i).toString(); 
    if(singleChar.match(chineseRegex)!= null){ 
      newLength+=2; 
    }
    else{ 
      newLength++; 
    } 
    if(newLength>len){ 
      break; 
    } 
    newStr += singleChar; 
  }
  if(hasDot&&strLength>len){ 
    newStr += "..."; 
  } 
  return newStr; 
} 
console.log(subString("antzone螞蟻部落歡迎您",10,true));

以上程式碼實現了我們的要求,能夠擷取指定長度的字串,下面介紹一下它的實現過程。

一.程式碼註釋:

1.function subString(str,len,hasDot){},第一個引數是要擷取的字串,第二個是要擷取的長度,第三個是是否顯示"...",如果為true則顯示,否則不顯示。

2.var newLength=0,宣告一個變數,用來儲存新的新字串的長度。

3.var newStr="",宣告一個變數,用來儲存擷取的字串。

4.var chineseRegex=/[^\x00-\xff]/g,用來匹配漢字。

5.var singleChar="",用來儲存原來字串中的單個字元。

6.var strLength=str.replace(chineseRegex,"**").length,獲取字串中字元的長度,這裡是將一個漢字替換為兩個*號,因為一個漢字佔據兩個位元組,一個因為字元只佔據一個位元組。

7.for(var i=0;i<str.length;i++){},遍歷字串中的每一個字元。

8.singleChar=str.charAt(i),獲取指定索引位置處的字元。

9.if(singleChar.match(chineseRegex)!= null){newLength+=2;}如果是漢字,則字元長度加2.

10.else{newLength++; },否則長度加1.

11.if(newLength>len){break;},如果擷取的長度超過規定的長度,那麼將跳出迴圈。

12.newStr += singleChar,字串連線,最後生成的就是要擷取的字元。

13.if(hasDot&&strLength>len){newStr += "...";},如果hasDot為true且原來字串的長度大於要擷取的長度,那麼就會就加點。

14.return newStr,返回字串。

二.相關閱讀:

1.replace()函式可以參閱正規表示式replace()一章節。 

2.charAt()函式可以參閱javascript charAt()一章節。 

3.match()函式可以參閱正規表示式match()函式一章節。

相關文章