slice,substring,substr的区别

slice,substring,substr用于数组或字符串之间的截取

  • slice(开始位置,结束位置)
    substring(开始位置,结束位置)
    substr(开始位置,截取几位)
  • slice可以用于数组也可用于字符串
    substring和substr只用于字符串
var arr = [1,2,3,4,5,6,7],
    str = "helloworld!";  //防止空格干扰,不用带空格的,注意这里有个!号也算一位
 
console.log(str.slice(1));  //elloworld!  
console.log(str.substring(1)); //elloworld! 
console.log(str.substr(1));  //elloworld! 
            
console.log(arr.slice(1));  //[2,3,4,5,6,7]
console.log(arr.substr(1));  //TypeError: arr.substr is not a function
console.log(arr.substring(1));  //TypeError: arr.substring is not a function
  • slice,substr能够将负数位置转换成整数位置
    substring能自动调换参数位置,负数当0处理

  • 当第一参(正)>第二参(正)时
    slice返回空
    substring 自动调换参数位置
    substr(开始位置,取n位) //如果第一参大于str.length,返回空

//栗子不变
console.log(str.slice(5,1));  //""
console.log(str.substring(5,1));  //ello
console.log(str.substr(5,1));  //"w"
 
console.log(arr.slice(5,1));  //[]
  • 第一参正,第二参负
    slice 将负数位置转化位正数位置后,截取
    substring 将负数当成0处理
    substr 第二参数为负数时,返回空
//栗子不变
//第一参正,第二参负
console.log(str.slice(1,-2)); //elloworl
console.log(str.substr(1,-2));  //""
console.log(str.substring(1,-2));  //h
 
console.log(arr.slice(1,-2)); //[ 2, 3, 4, 5]
  • 第一参负,第二参正
    slice 负数位置转化正数位置后截取
    substring 把负数当成0处理
    substr 负数位置转化正数位置后截取
//第一参负,第二参正
//栗子不变
console.log(str.slice(-3,1))  //""
console.log(str.substr(-3,1))  //l
console.log(str.substring(-3,1))  //h
 
console.log(arr.slice(-3,1))  //[]
  • 其他情况依照以上原则判断
//全负
//栗子不变
console.log(str.slice(-1,-5));      //""
console.log(str.substr(-1,-5)); //""
console.log(str.substring(-1,-5));      //""
 
console.log(arr.slice(-1,-5));  //[]
//上面的结果全是空
        
console.log(str.slice(-5,-1)); //orld
console.log(str.substr(-5,-1)); //""
console.log(str.substring(-5,-1)); //""
 
console.log(arr.slice(-5,-1)); //[ 3, 4, 5, 6 ]

参考链接:
https://blog.csdn.net/qq_38047742/article/details/82144266

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。