slice/substr/substring的區別

substring的定義和用法

substring() 方法用於提取字符串中介於兩個指定下標之間的字符。spa

語法

stringObject.substring(start,stop)
參數 描述
start 必需。一個非負的整數,規定要提取的子串的第一個字符在 stringObject 中的位置。
stop

可選。一個非負的整數,比要提取的子串的最後一個字符在 stringObject 中的位置多 1。code

若是省略該參數,那麼返回的子串會一直到字符串的結尾。對象

返回值

一個新的字符串,該字符串值包含 stringObject 的一個子字符串,其內容是從 start 處到 stop-1 處的全部字符,其長度爲 stop 減startblog

說明

substring() 方法返回的子串包括 start 處的字符,但不包括 stop 處的字符。索引

若是參數 start 與 stop 相等,那麼該方法返回的就是一個空串(即長度爲 0 的字符串)。若是 start 比 stop 大,那麼該方法在提取子串以前會先交換這兩個參數。字符串

 

substr的定義和用法

substr() 方法可在字符串中抽取從 start 下標開始的指定數目的字符。get

語法

stringObject.substr(start,length)
參數 描述
start 必需。要抽取的子串的起始下標。必須是數值。若是是負數,那麼該參數聲明從字符串的尾部開始算起的位置。也就是說,-1 指字符串中最後一個字符,-2 指倒數第二個字符,以此類推。
length 可選。子串中的字符數。必須是數值。若是省略了該參數,那麼返回從 stringObject 的開始位置到結尾的字串。

返回值

一個新的字符串,包含從 stringObject 的 start(包括 start 所指的字符) 處開始的 length 個字符。若是沒有指定 length,那麼返回的字符串包含從 start 到 stringObject 的結尾的字符。string

 

slice的定義和用法

slice() 方法可提取字符串的某個部分,並以新的字符串返回被提取的部分。console

語法

stringObject.slice(start,end)
參數 描述
start 要抽取的片段的起始下標。若是是負數,則該參數規定的是從字符串的尾部開始算起的位置。也就是說,-1 指字符串的最後一個字符,-2 指倒數第二個字符,以此類推。
end 緊接着要抽取的片斷的結尾的下標。若未指定此參數,則要提取的子串包括 start 到原字符串結尾的字符串。若是該參數是負數,那麼它規定的是從字符串的尾部開始算起的位置。

返回值

一個新的字符串。包括字符串 stringObject 從 start 開始(包括 start)到 end 結束(不包括 end)爲止的全部字符。table

說明

String 對象的方法 slice()、substring() 和 substr() (不建議使用)均可返回字符串的指定部分。slice() 比 substring() 要靈活一些,由於它容許使用負數做爲參數。slice() 與 substr() 有所不一樣,由於它用兩個字符的位置來指定子串,而 substr() 則用字符位置和長度來指定子串。

還要注意的是,String.slice() 與 Array.slice() 類似。

 

以上截自w3school

 

總結語:

 substring ==>> 截取兩個參數之間的字符,並返回

  1. 不支持雙負參數,雙負參數將會返回空字符串值;
  2. 雙正數參數,自動置換兩個參數的位置,較小的被做爲第一個參數;
  3. 一負一正參數,負數將被直接轉換成0,並做爲第一個參數,即起始位置,截止到以正數參數爲索引位置結束;
  4. 一個正數參數,以此數字爲索引位置起始,一直到字符串末尾,並返回截取的字符串,不包括起始位置的字符
  5. 一個負數參數,返回整個字符串;

 

 substr ==>> 從第一個參數指定的位置開始,截取以第二個參數指定的長度字符

  1.  不支持雙負數,同substring,最終返回空字符串值;
  2. 第二個參數不能爲負數和零,不然一樣返回空字符串值;
  3. 前負後正(-n,m),負數從末尾開始倒數(從-1倒數到-n開始),截取m個字符,若是m大於字符長度(length),截取到字符串末尾;
  4. 雙正(n,m),截取n到m位置的字符串;

 

 slice ==>>

  1. (n,m),若是m的位置在n的位置左邊,則返回空字符串;
  2. 雙正,在(1)的基礎上,若是m大於字符長度(length),則返回從n到末尾的字符串;
  3. 單個正數參數,從指定位置截取到字符串末尾,若是大於字符長度(length),則返回空字符串;

 

e.g:

var test = '0123456789';
console.log(test.substring(-2, -5));    // '' ,空字符串
console.log(test.substring(2, 5));    // 234
console.log(test.substring(2, 11));    // 23456789
console.log(test.substring(-2, 11));    // 0123456789
console.log(test.substring(2, -11));    // 01
console.log(test.substring(-2, 5));    // 01234
console.log(test.substring(5));    // 56789
console.log(test.substring(11));    // '' ,空字符串
console.log(test.substring(10));    // '' ,空字符串
console.log(test.substring(-5));    // 0123456789

console.log(test.substr(-3, -4));    // '' ,空字符串
console.log(test.substr(-3, 4));    // 789
console.log(test.substr(-3, 2));    // 78
console.log(test.substr(3, 4));    // 3456
console.log(test.substr(3, -4));    // '' ,空字符串
console.log(test.substr(3, 0));    // '' ,空字符串
console.log(test.substr(3, 14));    // 3456789
console.log(test.substr(3));    // 3456789
console.log(test.substr(-3));    // 789
console.log(test.substr(-14));    // 0123456789
console.log(test.substr(14));    // '' ,空字符串

console.log(test.slice(-3, -6));    // '' ,空字符串
console.log(test.slice(-3, -1));    // 78
console.log(test.slice(-3, 1));    // '' ,空字符串
console.log(test.slice(-3, 7));    // '' ,空字符串
console.log(test.slice(-3, 8));    // 7
console.log(test.slice(3, -8));    // '' ,空字符串
console.log(test.slice(3, -7));    // '' ,空字符串
console.log(test.slice(3, -1));    // 345678
console.log(test.slice(3, 1));    // '' ,空字符串
console.log(test.slice(3, 7));    // 3456
console.log(test.slice(3, 14));    // 3456789
console.log(test.slice(3));    // 3456789
console.log(test.slice(14));    // '' ,空字符串
相關文章
相關標籤/搜索