js中String对象slice、substr与substring的区别

1.slice(start,end)  

   返回字符串中起始位置为start,结束位置为end(不包括end)的子字符串

var name = "string of text"
console.log(name.slice(0,5)) //结果为strin

   slice可以传负数,负值 = 字符串的长度与负数相加

var name = "string of text"
console.log(name.slice(0,-5)) //结果为string of

   以上负数值等同于

var name = "string of text"
console.log(name.slice(0,9))  //结果也为string of

 

2.substr(start,length)

   返回一个从指定位置开始的指定长度的子字符串

/*
substr(初始索引值, 长度)
*/
var name = "string of text"
console.log(name.substr(3, 3)) //结果为ing

   substr也可以传负值,但仅仅是将第一个参数与字符串长度相加后的结果作为第一个参数

var test = 'hello world'
console.log(test.substr(-3));        //rld
console.log(test.substr(3,-4));      //空字符串

 

3.substring(start,end)

   返回一个指定位置之间的子字符串,不包括end

var name = "string of text"
console.log(name.substring(0, 5)) //结果为strin

   substring不能传负数,但参数位置可颠倒,因为substring是以两个参数中较小一个作为起始位置,较大的参数作为结束位置。如:

var name = "string of text"
console.log(name.substring(5, 0)) //结果也为strin

 

总结:

相同点:①slice、substr与substring都返回字符串的指定位置

    ②都不改变原字符串

不同点:①slice、substr参数可传负值,substring则不能

       ②slice、substring通过两个位置(起始位置,终止位置(不包括))提取一个字符串,substr则通过一个位置和一个长度(起始位置,长度)提取一个字符串

     ③slice、substr参数不可颠倒,substring则可以,因为substring以两个参数中较小一个作为起始位置,较大的参数作为结束位置。

posted @ 2021-08-02 22:37  雪茄与咖啡  阅读(81)  评论(0)    收藏  举报