js中截取字符串的三个方法 substring()、substr()、slice()的区别

507 阅读2分钟

js中截取字符串的三个方法 substring()、substr()、slice()

slice(beginSlice[, endSlice])

slice(beginSlice, endSlice)截取字符串的一部分,并返回一个新的字符串。其中beginSlice为起始位置索引值,endSlice为结束位置,不包含endSlice。可以将beginSliceendSlice理解为 [beginSlice, endSlice)。其中,beginSliceendSlice的值存在以下几种情况。

  • ① 只有一个参数beginSlice

    此时会从参数下标开始到字符串结尾进行截取。

  • ② beginSlice < endSlice

    此时会从x开始,到y结束,不包含y。

  • ③ beginSlice > endSlice

    此时会返回一个空字符串。

  • ④ beginSlice / endSlice 为负数

    如果值为负数,会被当做 sourceLength + beginSlice 看待,这里的sourceLength 是字符串的长度 (例如, 如果beginSlice 是 -3 则看作是: sourceLength – 3),然后将得到的结果当做新的值。最后再参考上面的2和3两种情况,根据情况给出结果。

str.substr(beginSlice[, length])

str.substr(beginSlice, length)截取字符串的一部分,并返回一个字符串。不同的是,其中beginSlice为起始位置索引值,length为截取长度。因为beginSlicelength参数含义不同,所以区分beginSlicelength互换的意义不大。所以,beginSlicelength的值存在的情况如下。

  • ① 只有一个参数beginSlice

    此时会从参数下标开始到字符串结尾进行截取。

  • ② 有两个参数

    此时按照beginSlice为起始位置索引值,length为截取长度,来对字符串进行截取。

  • ③length < 0

    此时会返回一个空字符串。

substring(beginSlice[, endSlice])

substring(beginSlice, endSlice)它的作用是提取字符串的子串。和slice(beginSlice, endSlice)一样,也是beginSlice为起始位置索引值,endSlice为结束位置,不包含endSlice。可以将beginSliceendSlice理解为 [beginSlice,endSlice)。其中,beginSliceendSlice的值存在以下几种情况。

  • ① 只有一个参数

    此时会从参数下标开始到字符串结尾进行截取。

  • ② beginSlice < endSlice

    此时会从x开始,到y结束,不包含y。

  • ③ beginSlice > endSlice

    此时会自动将beginSlice endSlice的位置进行互换,然后按照第二种情况给出结果。

  • ④beginSlice = endSlice

    此时会返回一个空字符串。

  • ⑤ endSlice < 0

    当y为负值时,会将endSlice 值看做0,然后根据第三种情况给出结果。换句话说,就是会提取beginSlice 之前(不包含beginSlice )的所有字符串。

三个方法的区别

1.slice和substring参数分别为(起始位置索引值,结束位置索引值),substr的参数则为(起始位置索引值,截取长度); 2.slice不能颠倒参数顺序,substring可以; 3.slice和substring的第二个参数为负时,结果不同。

参考

原文链接:blog.csdn.net/qq_21436667…