js中截取字符串的三个方法 substring()、substr()、slice()
slice(beginSlice[, endSlice])
slice(beginSlice, endSlice)
截取字符串的一部分,并返回一个新的字符串。其中beginSlice
为起始位置索引值,endSlice
为结束位置,不包含endSlice
。可以将beginSlice
,endSlice
理解为 [beginSlice, endSlice)。其中,beginSlice
和endSlice
的值存在以下几种情况。
-
① 只有一个参数
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
为截取长度。因为beginSlice
和length
参数含义不同,所以区分beginSlice
和length
互换的意义不大。所以,beginSlice
和length
的值存在的情况如下。
-
① 只有一个参数
beginSlice
此时会从参数下标开始到字符串结尾进行截取。
-
② 有两个参数
此时按照
beginSlice
为起始位置索引值,length
为截取长度,来对字符串进行截取。 -
③length < 0
此时会返回一个空字符串。
substring(beginSlice[, endSlice])
substring(beginSlice, endSlice)
它的作用是提取字符串的子串。和slice(beginSlice, endSlice)
一样,也是beginSlice
为起始位置索引值,endSlice
为结束位置,不包含endSlice
。可以将beginSlice
,endSlice
理解为 [beginSlice,endSlice)。其中,beginSlice
和endSlice
的值存在以下几种情况。
-
① 只有一个参数
此时会从参数下标开始到字符串结尾进行截取。
-
② 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的第二个参数为负时,结果不同。