JS substring substr slice区别
1、api说明
(1)substring
str.substring(indexStart[, indexEnd])
substring
提取从 indexStart
到 indexEnd
(不包括)之间的字符。特别地:
- 如果
indexStart
等于indexEnd
,substring
返回一个空字符串。 - 如果省略
indexEnd
,substring
提取字符一直到字符串末尾。 - 如果任一参数小于 0 或为
NaN
,则被当作 0。 - 如果任一参数大于
stringName.length
,则被当作stringName.length
。 - 如果
indexStart
大于indexEnd
,则substring
的执行效果就像两个参数调换了一样。
说明:参数不支持负数!
(2)substr
str.substr(start[, length])
tart
是一个字符的索引。首字符的索引为 0,最后一个字符的索引为 字符串的长度减去1。substr
从 start
位置开始提取字符,提取 length
个字符(或直到字符串的末尾)。
如果 start
为正值,且大于或等于字符串的长度,则 substr
返回一个空字符串。
如果 start
为负值,则 substr
把它作为从字符串末尾开始的一个字符索引。如果 start
为负值且 abs(start)
大于字符串的长度,则 substr
使用 0 作为开始提取的索引。注意负的 start
参数不被 Microsoft JScript 所支持。
如果 length
为 0 或负值,则 substr
返回一个空字符串。如果忽略 length
,则 substr
提取字符,直到字符串末尾。
说明:第二个参数是长度length。
(3)slice
str.slice(beginSlice[, endSlice])
slice()
从一个字符串中提取字符串并返回新字符串。在一个字符串中的改变不会影响另一个字符串。也就是说,slice
不修改原字符串,只会返回一个包含了原字符串中部分字符的新字符串。
注意:slice()
提取的新字符串包括beginSlice
但不包括 endSlice。
例1:str.slice(1, 4)
提取新字符串从第二个字符到第四个 (字符索引值为 1, 2, 和 3)。
例2:str.slice(2, -1)
提取第三个字符到倒数第二个字符。
2、区别
(1)slice和substring参数含义一致,但是slice的第二个参数支持负值时能被正确处理,substring的第二个参数设置为负值时被处理为0。
(2)substr的第二个参数是length,而不是索引值。
参考:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/substring
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/slice
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/substr
作者:孟繁贵 Email:meng010387@126.com 期待共同进步!