1. 程式人生 > >javascript的字串方法【substring、slice、substr】的區別

javascript的字串方法【substring、slice、substr】的區別

老忘,然後看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);
// '' 難有交際,返回空