slice()
、substring()
、substr()
这三个方法都是返回被操作字符串的一个子字符串,那么他们有啥区别呢?实际用到时候该怎么选择呢?
共性
- 返回一个新的字符串。
- 都是接受一个参数或者两个参数
- 如果没有第二个参数,则将字符串结束的未位作为结束位置
// log
let x = 'hello'
console.log(x.slice(1))
console.log(x.substring(1))
console.log(x.substr(1))
console.log(x)
特性
这里考虑第二个参数比第一个参数小的场景,有如下规则
- substr的第二个参数是截取的长度(这是它原本的功能)
- slice将返回空串
- substring无视先后顺序
// log
let x = 'hello'
console.log(x.substr(3, 1)) // 正常使用
console.log(x.slice(3, 1) === '')
console.log(x.substring(3, 1))
其他的“奇异”之处这里不再介绍,其实JS的stringAPI在这里设计的不是很好,在日常使用中,“奇异”部分应该避开,我准备以后:
- 只用
substring
,和java
保持一致。 - 参数不要出现负数。