区别
slice
截取从
start
位置开始, end
位置结束(不包含 end) 的字符串,返回一个新字符串
若参数为负数,需要从尾部位置倒数 负数参数长度
作为生效位置
start
大于 end
,则返回空字符串
start
大于字符串长度,返回空字符串
substring
截取从
start
位置开始, end
位置结束(不包含 end) 的字符串,返回一个新字符串
不支持负数
,若有负数,将会重置为 0
start
大于 end
,会将两者位置对调
start
大于字符串长度,返回空字符串
substr
截取从
start
位置开始, 截取长度为 length
,返回一个新字符串
若 start
为负数,需要从尾部位置倒数 start长度
作为生效位置
length 不支持负数
,若 length
为负数,会被重置成 0
,将返回空字符串
start
大于字符串长度,返回空字符串
备注:ECMAscript 没有对该方法进行标准化,因此反对使用它
一、slice
使用语法
s.slice(start, end)
说明
截取从
start
位置开始, end
位置结束(不包含 end) 的字符串,返回一个新字符串
若参数为负数,需要从尾部位置倒数 负数参数长度
作为生效位置
start
大于 end
,则返回空字符串
start
大于字符串长度,返回空字符串
例子
let s = '12345678'
应用场景
1. 没有参数, 从 0 开始到结束位置进行截取
s.slice() // s = '12345678' ---> '12345678'
2. 一个参数
2.1
正数:从 start 开始到结束位置进行截取,超出总长度,返回空字符串
s.slice(0) // s = '12345678' ---> '12345678'
s.slice(1) // s = '12345678' ---> '2345678'
s.slice(10) // s = '12345678' ---> ''
2.2
负数:若参数为负数,需要从尾部位置倒数 `负数参数长度` 作为生效位置
(可将负数参数与字符串长度相加即可得到生效数值)
s.slice(-2) // s.slice(6) ---> s = '12345678' ---> '78'
3. 两个参数
3.1
正数:从 start 开始到 end 位置进行截取
s.slice(1, 2) // s = '12345678' ---> '2'
3.2
负数:若参数为负数,需要从尾部位置倒数 `负数参数长度` 作为生效位置
(可将负数参数与字符串长度相加即可得到生效数值)
s.slice(5, -1) // s.slice(5, 7) ---> s = '12345678' ---> '67'
s.slice(-2, -1) // s.slice(6, 7) ---> s = '12345678' ---> '7'
s.slice(-1, -2) // s.slice(7, 6) ---> s = '12345678' ---> ''
二、substring
使用语法
s.substring(start, end)
说明
截取从
start
位置开始, end
位置结束(不包含 end) 的字符串,返回一个新字符串
不支持负数
,若有负数,将会重置为 0
start
大于 end
,会将两者位置对调
start
大于字符串长度,返回空字符串
例子
let s = '12345678'
应用场景
1. 没有参数, 从 0 开始到结束位置进行截取
s.substring() // s = '12345678' ---> '12345678'
2. 一个参数
2.1
正数:从 start 开始到结束位置进行截取,超出总长度,返回空字符串
s.substring(0) // s = '12345678' ---> '12345678'
s.substring(1) // s = '12345678' ---> '2345678'
s.substring(10) // s = '12345678' ---> ''
2.2
负数:若参数为负数,重置为 0
s.substring(-2) // s.substring(0) ---> s = '12345678' ---> '12345678'
3. 两个参数
3.1
正数:从 start 开始到 end 位置进行截取
start 若比 end 大,将会将两者位置对调
s.substring(1, 2) // s = '12345678' ---> '2'
s.substring(2, 1) // s.substring(1, 2) ---> s = '12345678' ---> '2'
3.2
负数:若参数为负数,重置为 0
start 若比 end 大,将会将两者位置对调
s.substring(5, -1) // s.substring(5, 0) ---> s.substring(0, 5) ---> s = '12345678' ---> '12345'
s.substring(-2, -1) // s.substring(0, 0) ---> s = '12345678' ---> '0'
三、substr
使用语法
s.substr(start, length)
说明
截取从
start
位置开始, 截取长度为 length
,返回一个新字符串
若 start
为负数,需要从尾部位置倒数 start长度
作为生效位置
length 不支持负数
,若 length
为负数,会被重置成 0
,将返回空字符串
start
大于字符串长度,返回空字符串
例子
let s = '12345678'
应用场景
1. 没有参数, 从 0 开始到结束位置进行截取
s.substr() // s = '12345678' ---> '12345678'
2. 一个参数
2.1
正数:从 start 开始到结束位置进行截取,超出总长度,返回空字符串
s.substr(0) // s = '12345678' ---> '12345678'
s.substr(1) // s = '12345678' ---> '2345678'
s.substr(10) // s = '12345678' ---> ''
2.2
负数:若 start 为负数,需要从尾部位置倒数 `start长度` 作为生效位置
(可将 start 与字符串长度相加即可得到生效数值)
s.substr(-2) // s.substr(6) ---> s = '12345678' ---> '78'
3. 两个参数
3.1
正数:从 start 开始,截取长度为 length
s.substr(1, 2) // s = '12345678' ---> '23'
s.substr(2, 1) // s = '12345678' ---> '3'
3.2
负数:若 start 为负数,需要从尾部位置倒数 `start长度` 作为生效位置
(可将 start 与字符串长度相加即可得到生效数值)
若 length 为负数,会被重置成 0,将返回空字符串
s.substr(5, -1) // s.substr(5, 0) ---> s = '12345678' ---> ''
s.substr(-2, 1) // s.substr(6, 1) ---> s = '12345678' ---> '7'
都读到最后了、留下个建议如何