总结js中字符串截取的几种方法

2,385 阅读3分钟

这是我参与8月更文挑战的第1天,活动详情查看:8月更文挑战

截取字符串是我们在工作中十分常见的需求,像我这种记性差的,就总记不住那几个词,每次用到都得去百度,然后每次百度到的内容还都不一样,然后就百度到啥就用啥,一直也没有研究一下几种截取字符串的方法有啥区别。于是今天就来自己总结一下几种截取字符串的方法,下一次再忘了看自己的总比再去搜强。

js提供的原生截取方法

首先需要强调的一件事就是,在js中,字符串一旦被创建,就永远无法修改,所以js提供的字符串相关的截取方法就不存在会影响原字符串的说法

slice

定义

slice() 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。

语法

stringObject.slice(start,end)
参数描述
start从何处开始截取字符串。如果是负数,则该参数规定的是从字符串的尾部开始算起的位置。也就是说,-1 指从最后一个字符开始截取,-2 指从倒数第二个字符开始截取,以此类推。
end截取到哪个字符串。若未指定此参数,则要提取的子串包括 start 到原字符串结尾的字符串。如果该参数是负数,那么它规定的是从字符串的尾部开始算起的位置。

返回值

slice接收的两个参数都是选填的,如果省略第二个参数,将返回从start到结尾的字符串,如果两个都省略,将返回整个字符串,如果两个都传,则会返回从start到end之间的字符串。

substring

定义

substring() 方法用于提取字符串中介于两个指定下标之间的字符。

语法

stringObject.substring(start,stop)
参数描述
start从何处开始截取字符串,不可为负数
end截取到哪个字符串。不可为负数

返回值

substring接收的两个参数都是选填的,如果省略第二个参数,将返回从start到结尾的字符串,如果两个都省略,将返回整个字符串,如果两个都传,则会返回从start到end之间的字符串。如果end大于start,substring则会调换两者的位置,从end截取到start

substr

定义

substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。

语法

stringObject.substr(start,length)
参数描述
start从何处开始截取字符串。如果是负数,则该参数规定的是从字符串的尾部开始算起的位置。也就是说,-1 指从最后一个字符开始截取,-2 指从倒数第二个字符开始截取,以此类推。
length截取的字符数,不可为负数

返回值

substr接收的两个参数都是选填的,如果省略第二个参数,将返回从start到结尾的字符串,如果两个都省略,将返回整个字符串,如果两个都传,则会从start开始,截取length个字符串并返回。

辅助用法

有时候我们需要根据固定的字符把一整串字符分隔开,比如我们需要把‘姓名:王五’这个字符串根据冒号分隔开,给前面的字加上样式,就可以用indexOf结合substring去做。

let str = ‘姓名:王五’
let index = str.indexOf(':') + 1
let label = str.substring(0, index)
let value = str.substring(index)

为什么不用slice,因为如果indexOf返回一个负数,可能会造成结果异常 为什么不用substr,是因为我们无法确定截取的字数