newPromise / js-

0 stars 0 forks source link

字符串中的 `substr`, `slice` 以及 `substring` 三种方法进行比较 #39

Open newPromise opened 5 years ago

newPromise commented 5 years ago

在字符串的截取操作中, 存在三种方法可以用来截取字符串,例如: substring, slice 以及 subtr 这三种的用法是不同的

  1. substring 以及 slice 用于截取字符串, 分别接受两个参数, 表示开始的截取字符串位置和结束的字符串位置, 对于 substr 而言, 接收的参数分别是开始截取的字符串位置和需要进行截取的字符串长度 例如下面的例子:
let str = "hello";
str.substr(1, 2); // el
str.substring(1, 2)// e
str.slice(1, 2) // e

需要注意的一点是, 对于 substring 而言, 会将接收到的参数中的较小的一个参数作为开始截取字符串的位置 // 需要记住, 当参数都是正数的时候, 对于 substr 接收的参数分别是开始截取的位置和需要进行截取的字符串的长度

当上面的三种方法中接收到的参数仅仅只有一个的时候, 截取的是从开始位置都字符串末尾的字符串。

  1. 这三种方法当接受的参数是负数的情况下是不同的结果

对于 slice 而言, 对于存在负数的参数, 会将相应位置的参数负数和字符串长度相加,如果相加之后的数值为正数的话, 会将正数作为参数 如果相加之后的数值为负数的时候, 则会将相应的参数变为0 例如:

str.slice(-1) // o
str.slice(0, -2)// hel
str.slice(-1, -6) // “ ”空字符串,相当于 str.slice(4, -1)

对于 substr 而言, 接收的第二个参数是要进行截取的字符串长度, 当传入的参数为负数的时候, 仅仅是将第一个参数(字符串进行截取的开始位置)转化为正数

str.substr(-3) //  llo
str.substr(-3,  -1) // "" 对于第二个参数不会进行转换

对于 substring 而言, 会将存在负数的参数变为0

str.substring(-1, 2)//  he 
str.substring(2, -3) // he