【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只有開始和開始的數量,這種方式用的場景特定,區別也是最明顯的,希望如果記不住前面兩個,那就那這個孤兒收了吧?。
感謝
萬能的網路
公眾號-歸子莫,小程式-小歸部落格