【JavaScript使用技巧】三個擷取字串中的子串,你用的哪個

歸子莫發表於2021-11-17

【JavaScript使用技巧】三個擷取字串中的子串,你用的哪個

部落格說明

文章所涉及的資料來自網際網路整理和個人總結,意在於個人學習和經驗彙總,如有什麼地方侵權,請聯絡本人刪除,謝謝!

slice() 擷取

說明

通過指定的開始和結束位置,提取字串的某個部分,並以新的字串返回被提取的部分。

語法
stringObject.slice(start, end)
引數說明

start(必需):規定從何處開始選取。

如果是負數,那麼它規定從字串尾部開始算起的位置。

end(可選):規定從何處結束選取,即結束處的字元下標。

如果沒有指定該引數,那麼擷取的字串包含從 start 到結束的所有字元。如果這個引數是負數,那麼它規定的是從陣列尾部開始算起的字元。

示例
var str = "0123456789";
str.slice(0,5); // 01234
str.slice(3);  //3456789
str.slice(3,5);  //34
str.slice(-3);  //789

substring()擷取

說明

提取字串中介於兩個指定下標之間的字元,返回一個新的字串

語法
stringObject.substring(start, stop)
引數說明

start(必需):一個非負的整數,注意是非負的整數。

標識了要提取的子串的第一個字元在 stringObject 中的位置。

stop(可選):一個非負的整數,注意是非負的整數。

比要提取的子串的最後一個字元在 stringObject 中的位置多 1(至少為一個字元)。

var str = "0123456789";
str.substring(3,5); //34
str.substring(3); //3456789

注意:

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

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

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

substr() 擷取

說明

substr 方法用於返回一個從指定位置開始的指定長度的子字串。這裡注意第二個引數是長度,而不是結束的位置。

語法
stringObject.substr(start, length)
引數說明

start(必需):所需的子字串的起始位置。

字串中的第一個字元的索引為 0。

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

var str = "0123456789";
str.substr(3,5); //34567
str.substr(3); //3456789

注意:

如果 length 為 0 或負數,將返回一個空字串

如果沒有指定 length,則子字串將延續到 stringObject 的最後

如果 start 或 length 為負數,那麼它將被替換為 0

對比和記憶

其實我猜大多數pym都知道這個三個方法,但是這三個方法的區別總是有些把持不住的樣子。

給一段程式碼,好對比。

var str = "0123456789";
str.slice(3,5);  //34
str.substring(3,5); //34
str.substr(3); //3456789

slice和substring都有開始和結束的概念,所以在有開始和結束引數時,區別不大,substring不支援負數,這一邊有別於slice,一般也是基於這一點來區分使用的。

substr只有開始和開始的數量,這種方式用的場景特定,區別也是最明顯的,希望如果記不住前面兩個,那就那這個孤兒收了吧?。

感謝

萬能的網路

以及勤勞的自己,個人部落格GitHub測試GitHub

公眾號-歸子莫,小程式-小歸部落格

相關文章