slice(), substring(), substr() 区别
js截取字符串
slice()
string.slice(start, end)
参数 | 描述 |
start | 必需。要截取的字符串的起始下标。如果是负数,则数值为string.length + start 。例如,-1指的是最后一个字符,-3指的是倒数第三个字符。 |
end | 可选。要截取的字符串的终止下标。如果省略改参数,slice()会一直提取到字符串末尾。如果是负数,则数值为string.length + end 。 |
- 两个参数都是位置下标, 两个参数都支持负数,且两参数不会互换位置,始终是先
start
后end
,如果区间不存在则返回空字符串''
。
- 该方法返回的字符串包括start但不包括end,即[start, end)。
substring()
string.substring(start, end)
参数 | 描述 |
start | 必需。要截取的字符串的起始下标。应是非负的整数 。 |
end | 可选。要截取的字符串的终止下标。应是非负的整数 。 |
- 两个参数都应该是非负数,如果
start
或end
是负数,则会被转换成0。
start
和end
两个参数,会是小的参数作为start
,大的参数作为end
。start
和end
相等,则会返回空字符串''
。
- 如果两个参数中有正小数,则会把该参数向下取整。
- 如果两个参数有字符串,则会先进行parseInt(),如果转换结果为
NaN
,则会转换为0。
- 该方法返回的字符串包括start但不包括end,即[start, end)。
substr()
string.substr(start, length)
参数 | 描述 |
start | 必需。要截取的字符串的起始下标。如果是负数,则数值为string.length + start 。 |
length | 可选。要截取的字符串的长度。如果是负数,则会被当做0处理,返回空字符串'' 。 |
- 如果由
start
和length
计算得出的字符串长度超过了string的最末端,则截取到最末端即结束。
- 如果
start
或者length
,那么会去除小数部分取整数部分。
- 如果两个参数有字符串,则会先进行parseInt(),如果转换结果为
NaN
,则会转换为0。
ECMAscript 没有对该方法进行标准化,所以不建议使用该方法。
总结
slice()
与substring()
的两个参数都是下标,但两者参数对于参数为负数的处理不一样。substring()
永远都是小的参数作为start
,但slice()
永远都是第一个参数作为start
。
substr()
对负数的处理同slice()
,但slice()
的第二个参数是length
,表示要截取的字符串的长度。