javascript的字串方法【substring、slice、substr】的區別
阿新 • • 發佈:2019-02-20
老忘,然後看mdn。這裡總結下,記錄一筆,好記性不如爛筆頭:
String.prototype.substring:
這個方法傳遞的是字串下標的索引位置,返回新的被擷取的字串,不會改變原來的字串。
- 接受兩個引數,不填也沒關係,啥事情都不做。
- 第一個引數是起始位置,第二個引數是可選引數結束位置,第二個引數不寫的時候就是預設索引到最後。
- 第二個引數可以小於第一個引數,這種情況下,其實他們就發生了一個對調的關係。返回從小索引到大索引之間的位置。同時,大的位置的索引實際會後退一位。
- 第二個引數填負數頁沒關係,但是填負數沒有意義,它會被認為是0索引位置。
var string = 'hello world';
string.substring(2, 0);
// "he" 如果是 0 2 應該是 hel 但是由於第二個引數小,這裡實際是 he
String.prototype.substr:
這個方法傳遞的是字串下標的索引位置,第二個引數是要擷取的長度。
- 接受兩個引數,不填也沒關係,啥事情都不做。
- 第一個引數是起始位置,第二個引數是可選引數要擷取的長度,第二個引數不寫的時候就是預設長度擷取到最後
- 第二個引數,大於最大長度就預設最大長度。非正數都不擷取,不報錯。
var string = 'hello world';
string.substr(2 ,-1);
// "" 不擷取
String.prototype.slice:
這個方法和substring一樣,就是在第二個引數傳負數的時候有差別,可以說slice是substring的超集
- 第二個引數為負數的時候,就自動從尾部開始作為起始點往前弄。
- 第二個引數為負數的時候,經過嘗試沒有交集的時候,會返回空字串
var string = 'hello world';
string.slice(0,-1);
// "hello worl" 尾部開始往回截
var string = 'hello world';
string.slice(6,-5);
// '' 難有交際,返回空