前端擷取字串: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