共计 732 个字符,预计需要花费 2 分钟才能阅读完成。
实不相瞒,对于字符串中的 slice()、substr() 和 substring() 这三个方法,我自己很长一段时间都是理不清的,每次用都得查一下文档,因为他们长得实在是太像了。
特性
我们先来温习一下,他们的特性如下:
这三个方法都会返回被操作字符串的一个子字符串,而且也都接受一或两个参数
这三个方法都不会改变原字符串
第一个参数指定子字符串的开始位置,第二个参数(在指定的情况下)表示子字符串到哪里结束。具体来说,slice() 和 substring() 的第二个参数指定的是子字符串最后一个字符后面的位置,而 substr() 的第二个参数指定的则是返回的字符个数
我们来看几个简单的例子:
const str = ‘hello world’
console.log(str.slice(3)) // lo world
console.log(str.substring(3)) // lo world
console.log(str.substr(3)) // lo world
console.log(str.slice(3, 7)) // lo w
console.log(str.substring(3, 7)) // lo w
console.log(str.substr(3, 7)) // lo worl
吐槽
substring():slice() 同学,我们干的是一样的活,我感觉你有点多余,并且你的名字在数组的方法中也出现了,让人用起来晕晕的。slice():我们在传入负值的时候,是不一样的。
console.log(str.slice(-3)) // rld
console.log(str.substring(-3)) // hello world
substring():谁没事传负值啊,你见过有人传入负值的吗?混乱!slice():…