应用场景:在我们前端web日常开发中,常常需要对字符串进行一些操作,比如字符串的截取。在一段字符串中,截取我们所需要的内容。
截取字符串的常用方法:
1.slice(beginIndex[,endIndex])方法
beginIndex
:当beginIndex为正数
时:表示开始截取字符串的下标位置。
当beginIndex为负数
时:字符串的长度加上beginIndex,如果结果为正数,就表示开始截取字符串的下标位置。如果结果为负数:表示从下标0开始截取。(必传,截取的内容包含该下标对应的内容)
endIndex
:当endIndex为正数
时:表示截取字符串结束的位置。
当beginIndex为负数
时:字符串的长度加上beginIndex,如果结果为正数,就表示截取字符串结束的位置。如果结果为负数,截取的字符串为空。(选传。截取的内容不包含该下标对应的内容)
注:参数beginIndex和endIndex截取的内容相当于数学中的区间,beginIndex时闭区间,endIndex时开区间:[beginIndex,endIndex)
返回值:截取到的字符串(对原本字符串没影响)
var a = 'abcde'
console.log(a.slice(0))
// 结果:abcde
// 原因:从字符串的下标0一直截取到结束
console.log(a.slice(-1))
// 结果:e
// 原因:字符串的长度:5,5+(-1)=4,从下标4开始截取到结束
console.log(a.slice(0, 2))
// 结果:ab
// 原因:从字符串的下标0截取到下标2,但不包含下标2的字符
console.log(a.slice(0, -1))
// 结果:abcd
// 原因:字符串的长度:5,5+(-1)=4,从下标0开始截取到下标为4
console.log(a.slice(0, -6))
// 结果:空白
// 原因:字符串的长度:5,5+(-6)<0,返回值为空
2.substring(indexStart[,indexEnd])方法
substring()需要注意一下六点:
- substring()提取出来的字符串包含indexStart下标对应的内容,但是不包含indexEnd下标对应的内容
- 如果两个参数的值一样(即:indexStart=indexEnd),substring()返回一个空字符串
- 如果indexEnd省略不写,substring则从indexStart对应的下标一直截取到字符串的结尾
- 如果indexStart或者indexEnd小于0或者时NaN,就会被当作0来处理
- 如果indexStart或者indexEnd大于string.length,就会被当作string.length来处理。
- 如果indexStart的值大于indexEnd,他们两个的值就会相互交换。
var a = 'abcde'
console.log(a.substring(0,2))
// 结果:ab
// 原因:从下标0开始截取,到下标2结束,但是截取的内容包含开始下标0对应的内容,不包含结束下标2对应的内容
console.log(a.substring(1,1))
// 结果:空字符串
// 原因:由于indexStart等于indexEnd,他们两个组成的时空区间,所以返回空字符串。
console.log(a.substring(0))
// 结果:abcde
// 原因:由于不写indexEnd,则从indexStart一直截取到末尾
console.log(a.substring('asdasd'))
// 结果:abcde
// 原因:由于传入的参数不是数字,所以'asdasd'会被当作0来处理
console.log(a.substring(-3))
// 结果:abcde
// 原因:由于传入的参数小于0,所以-3会被当作0来处理
console.log(a.substring(0,100))
// 结果:abcde
// 原因:字符串的长度为5,而indexEnd为100,大于字符串的长度,所以会被当作5来处理
console.log(a.substring(5,0))
// 结果:abcde
// 由于indexStart大于indexEnd,所以他们两个位置互换,变成a.substring(0,5)
3.substr(start[,length])方法
substr()需要注意一下四点:
- 如果substring()什么参数都不传,就会返回原本的字符串
- 如果start大于或者等于字符串的长度,则返回一个空的字符串
- 如果start为负数,则加上字符串的长度,得到的结果如果大于等于0,则得到的结果就会被当作start来处理,如果结果小于0,则start则会被当作0来处理
- 如果length为0或者负数,则返回一个空的字符串。
- start参数:截取字符串的下标,截取的内容包含该下标对应的内容
- length参数:截取字符串的长度
var a = 'abcde'
console.log(a.substr())
// 结果:abcde
// 原因:由于什么都不传,就返回原本的字符串
console.log(a.substr(6))
console.log(a.substr(5, 2))
// 两个结果都为:空字符串
// 原因:由于start的值大于或者等于字符串的长度5,所以返回的是空字符串
console.log(a.substr(-1))
// 结果:e
// 原因:字符串的长度5+(-1)=4,从下标4截取到末尾
console.log(a.substr(-6))
// 结果:abcde
// 原因:字符串的长度5+(-6)=-1<0,所以start的值被当作0来处理
console.log(a.substr(0, 3))
// 结果:abc
// 原因:从下标0开始截取,截取长度为3的字符串
console.log(a.substr(0, 0))
console.log(a.substr(0, -1))
// 两个结果都为:空字符串
// 原因:length的长度小于等于0,所以截取的字符串没有长度