JavaScript擷取字串方式總結

antzone發表於2018-07-12

應用中,經常會遇到擷取字串的需求。

實現此功能的方式有多種,JavaScript本身提供了這樣的方法,當然也可以通過自定義實現。

下面就對常用的方式做一下簡單介紹,需要的朋友可以進行一下參考。

一.substring方法:

此方法可以擷取介於指定索引之間的字元。

更多關於此方法內容參閱JavaScript substring()一章節。

語法結構:

[JavaScript] 純文字檢視 複製程式碼
stringObject.substring(start,stop)

引數解析:

(1).start:必需,非負的整數,規定要提取的子串的第一個字元在 stringObject 中的位置。 

(2).stop:可選,非負的整數,此數字位置的字元不包括在提取之內。如果省略該引數,返回的子串會一直到字串的結尾。 

返回值是一個新生成的字串,內容是源字串中從start處到 stop-1處的子字串。

特別說明:

(1).返回的子串包括 start 處的字元,但不包括 end 處的字元。 

(2).如果start 與 end相等,那麼該方法返回的就是一個空串(即長度為0的字串)。 

(3).如果start比end大,那麼該方法在提取子串之前會先交換這兩個引數。 

(4).如果start或end為負數,那麼它將被替換為 0。 

(5).如果start值大於字串的最大索引,那麼返回值是空字串,也就是長度是0。

程式碼例項:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var str = "softwhy.com"; 
console.log(str.substring(0));
console.log(str.substring(5));
console.log(str.substring(10));
console.log(str.substring(12));
console.log(str.substring(-5));
console.log(str.substring(-10));
console.log(str.substring(-12));
console.log(str.substring(0,5));
console.log(str.substring(0,10));
console.log(str.substring(0,12));
console.log(str.substring(2,0));
console.log(str.substring(2,2));
console.log(str.substring(2,5));
console.log(str.substring(2,12));
console.log(str.substring(2,-2));
console.log(str.substring(-1,5));
console.log(str.substring(-1,-5));

二.substr方法:

此方法可以從原來字串中返回從指定索引開始,指定長度的子字串。

當然返回值也是一個新的字串。

更多關於此方法內容參閱JavaScript substr()一章節。

語法結構:

[JavaScript] 純文字檢視 複製程式碼
stringObject.substr(start [, length ])

引數解析:

(1).start:必需,所需的子字串的起始位置。字串中的第一個字元的索引為0。 

(2).length:可選,在返回的子字串中應包括的字元個數。

特別說明:

(1).如果 length 為 0 或負數,將返回一個空字串。 

(2).如果沒有指定該引數,則子字串將延續到stringObject的最後。

程式碼例項:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var str = "softwhy.com"; 
console.log(str.substr(0));
console.log(str.substr(2));
console.log(str.substr(3,4));

三.自定義方法:

自定義方法的方式有很多,下面分享一個比較好的程式碼:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var str = "螞蟻部落的網址是softwhy.com"; 
function subString(str, len, hasDot){ 
  var newLength=0; 
  var newStr=""; 
  var chineseRegex=/[^\x00-\xff]/g; 
  var singleChar=''; 
  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(str,24,true));

實現了擷取功能,並且功能很強大,能夠區分中英文,每一箇中文字元的長度為2,剩餘的字元用點表示。

相關閱讀:

(1).replace方法參閱JavaScript replace()一章節。

(2).charAt方法參閱JavaScript charAt()一章節。

(3).match方法參閱正規表示式 match()一章節。

相關文章