substr,substring和slice三者的比较


当substring和slice传入的参数均为正值时,两者效果基本相同,都是从起始位置截取至结束位置。而substr则是从起始位置截取指定长度的字符串。

const str = 'Hello World'

console.log(str.slice(4,7))       //o W
console.log(str.substring(4,7))   //o W
console.log(str.substr(4,7))      //o World

值得注意的是如果substring传入的参数如果后者比前者小,那么substring会以后者作为起始位置,而slice则是无法得到结果。

console.log(str.slice(7,4))       //无输出
console.log(str.substring(7,4))   //o W

传入负值时,slice和substr会将该参数与字符串长度相加得到的结果作为参数,而substring则是直接当0处理

console.log(test.slice(-3))         //rld
console.log(test.substring(-3))     //hello world
console.log(test.substr(-3))        //rld

console.log(test.slice(3,-4))       //lo w
console.log(test.substring(3,-4))   //hel
console.log(test.substr(3,-4))      //空字符串