1. 程式人生 > 其它 >前端擷取字串:JS擷取字串之substring、substr和slice詳解

前端擷取字串:JS擷取字串之substring、substr和slice詳解

substring()方法

方法用於提取字串中介於兩個指定下標之間的字元

substring(start,end)
引數 描述
start 必需。一個非負的整數,規定要提取的子串的第一個字元在 stringObject 中的位置。
stop 可選。一個非負的整數,比要提取的子串的最後一個字元在 stringObject 中的位置多 1。如果省略該引數,那麼返回的子串會一直到字串的結尾。

返回值

一個新的字串,該字串值包含 stringObject 的一個子字串,其內容是從 start 處到 stop-1 處的所有字元,其長度為 stop 減 start。

說明

substring 方法返回的子串包括 start 處的字元,但不包括 end 處的字元。 如果 start 與 end 相等,那麼該方法返回的就是一個空串(即長度為 0 的字串)。 如果 start 比 end 大,那麼該方法在提取子串之前會先交換這兩個引數。 如果 start 或 end 為負數,那麼它將被替換為 0。

substr 方法

定義和用法

substr 方法用於返回一個從指定位置開始的指定長度的子字串。

語法

stringObject.substr(start [, length ])
引數 描述
start 必需。所需的子字串的起始位置。字串中的第一個字元的索引為 0。
length 可選。在返回的子字串中應包括的字元個數。

說明

如果start為負數,則start=str.length+start。 如果 length 為 0 或負數,將返回一個空字串。 如果沒有指定該引數,則子字串將延續到stringObject的最後。

首先,他們都接收兩個引數,slice和substring接收的是起始位置和結束位置(不包括結束位置),而substr接收的則是起始位置和所要返回的字串長度。直接看下面例子:

var test = 'hello world';
alert(test.slice(4,7));       //o w
alert(test.substring(4,7));     //o w
alert(test.substr(4,7));      //o world

這裡有個需要注意的地方就是:substring是以兩個引數中較小一個作為起始位置,較大的引數作為結束位置。如:

alert(test.substring(7,4)); //o w

接著,當接收的引數是負數時,slice會將它字串的長度與對應的負數相加,結果作為引數;substr則僅僅是將第一個引數與字串長度相加後的結果作為第一個引數;substring則乾脆將負引數都直接轉換為0。測試程式碼如下

var test = 'hello world';

alert(test.slice(-3));     //rld
alert(test.substring(-3));   //hello world
alert(test.substr(-3));    //rld
alert(test.slice(3,-4));    //lo w
alert(test.substring(3,-4));  //hel
alert(test.substr(3,-4));   //空字串

1注意:IE對substr接收負值的處理有錯,它會返回原始字串。

https://www.98891.com/article-95-1.html

slice() 方法

定義和用法

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

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

一個新的字串。包括字串 stringObject 從 start 開始(包括 start)到 end 結束(不包括 end)為止的所有字元。說明String 物件的方法 slice()、substring() 和 substr() (不建議使用)都可返回字串的指定部分。slice() 比 substring() 要靈活一些,因為它允許使用負數作為引數。slice() 與 substr() 有所不同,因為它用兩個字元的位置來指定子串,而 substr() 則用字元位置和長度來指定子串。 還要注意的是,String.slice() 與 Array.slice() 相似。

例項

例子 1在本例中,我們將提取從位置 6 開始的所有字元:
<script type="text/JavaScript">

var str="Hello happy world!"
document.write(str.slice(6))

</script>
輸出:
happy world!
例子 2 在本例中,我們將提取從位置 6 到位置 11 的所有字元:
<script type="text/javascript">

var str="Hello happy world!"
document.write(str.slice(6,11))

</script>
輸出:
happy