slice(start,end)和substring(start,end)更像
他们两个的end都是原字符串的索引,意思为截取到end(不包括end)位置的字符
语法
一.slice() 的用法:
语法: stringObject.slice(start,end)
1.start 是开始下标的位置,如果是负数,他的原理就是(c.length + start) ,从这个位置开始计算
2.end (可选) 是结束的下标的位置
注意: 如果第一个数值比第二个数值大, 那么返回的就是 “”
记忆:slice(start,end) 参数为负,则+length; start>end,则为空
二.substring()的用法
语法: stringObject.substring(start,end)。
1. start代表的开始的位置,如果只有一个参数,那么就从开始的位置到结束的位置, 如果是负数的话,默认的处理机制是把他变成0,然后再进行操作
2. end 代表的是结束的位置,如果是负数的话,也会把他变成0然后进行操作.
注意: 如果end的数值比start的数值小,那么他们会进行交换一次,然后再得出结果
记忆:substring(start,end) 参数为负,则变0; start>end,则交换
三.substr()的用法
语法: stringObject.substr(start,length)。
1.start 是代表开始的位置,从该位置开始到字符结束的位置,如果该数字是负数,那么相当于是执行(c.length + start)
2. length (可选) 代表的是截图字符的长度,如果省略该参数,就从开始的位置到结束位置
注意: 如果length数值为负数,那么返回的结果就是 “”
记忆:substr(start,length) start参数为负,则+length; end为负或0,则为空
对比
slice(start,end) 参数为负,则+length; start>end,则为空
substring(start,end) 参数为负,则变0; start>end,则交换
substr(start,length) start参数为负,则+length; end为负或0,则为空
与substring()相比,slice()更灵活,可以接收负参数。
substr()可以代替slice()和substring()来使用,但是ECMAscript 没有对该方法进行标准化,因此尽量少使用该方法。
代码
let c = "little boy";
console.log(c.slice(1)); // "ittle boy"
console.log(c.slice(1, 5)) // "ittl"
console.log(c.slice(3, 2)) // ""
console.log(c.slice(-3)) // "boy"
console.log(c.slice(-3, 1)) // ""
console.log(c.slice(1, -3)) // "ittle "
let c = "little boy";
console.log(c.substr(1)) // "ittle boy"
console.log(c.substr(1, 5)) // "ittle"
console.log(c.substr(3, 2)) // "tl"
console.log(c.substr(-3)) // "boy"
console.log(c.substr(-3, 1)) // "b"
console.log(c.substr(1, -3)) // ""
let c = "little boy";
console.log(c.substring(-1)) // "little boy"
console.log(c.substring(1, 5)) // "ittl"
console.log(c.substring(3, 2)) // "t"
console.log(c.substring(-3)) // "little boy"
console.log(c.substring(-3, 1)) // "l"
console.log(c.substring(1, -3)) // "l"