字符串函数 slice() substring() substr() 的区别

参数为负数的一些特点

  • slice() : 方法会将传入的负值与字符串的长度相加;
  • substr() :方法将负的第一个参数加上字符串的长度,而将负的第二个参数转换为0;
  • substring() :方法会把所有的负值参数都转换为0;

1.slice()

slice(start,end) start(包含)和end(不包含)

第1种情况:slice(3)

                               
// slice(3);                  没有给该方法传递第二个参数,则将字符串的长度作为结束位置 。
let str = 'abcdefg';    	  //相当于slice(3,7);       str.lenght = 7
console.log(str.slice(3));    //defg

第2种情况:slice(3,6);

// slice(3,6);                 //包头不包尾
let str = 'abcdefg';  		  // slice(start,end)  start(包含)和end(不包含)
console.log(str.slice(3,6));  // def

第3种情况:slice(-3);

// slice(-3);                将传入的负值与字符串的长度相加。   (-3) + str.lenght(7) = 4 
let str = 'abcdefg';         //相当于slice(4)        
console.log(str.slice(-3));  //efg

第4种情况:slice(1,-3);

// slice(1,-3);               将传入的负值与字符串的长度相加。 start(包含)和end(不包含)
let str = 'abcdefg';           //   相当于(1, 4)   4 = (-3) + str.lenght(7)
console.log(str.slice(1,-3));  //bcd

2.substring()

substring(start,end) start(包含)和end(不包含)

第1种情况:substring(3)

// substring(3);      没有给该方法传递第二个参数,则将字符串的长度作为结束位置 。start(包含)和end(不包含)
let str = 'abcdefg';    	  //相当于substring(3,7);    str.lenght = 7
console.log(str.substring(3));    //defg

第2种情况:substring(3,6) substring(5,1);

// substring(1,5);         //包头不包尾
// substring(5,1);        //两个参数中较小一个作为起始位置,较大的参数作为结束位置
let str = 'abcdefg';  		 
console.log(str.substring(1,5));  // bcde
console.log(str.substring(5,1));  // bcde

第3种情况:substring(-3)

// substring(-3);                
let str = 'abcdefg';             // 该方法会把所有的负值参数都转换为0。 相当于substring(0);
console.log(str.substring(-3));  // abcdefg

第4种情况:substring(2,-5)

// substring(2,-5);                
let str = 'abcdefg';               // 该方法会把所有的负值参数都转换为0。 相当于substring(2,0);
					            // 两个参数中较小一个作为起始位置,较大的参数作为结束位置 
console.log(str.substring(2,-5));  // ab

3.substr()

substr(start,length) start(包含开头位置)和 length(长度)

第1种情况:substr(3)

// substr(3);      没有给该方法传递第二个参数,则将字符串的长度作为结束位置 。
let str = 'abcdefg';    	  //相当于substr(3,7);    str.lenght = 7
console.log(str.substr(3));    //defg

第2种情况:substr(1,5) substr(5,1);

// substr(1,5);         //   表示从下标1开始获取5个字符长度
// substr(5,1);        //    表示从下标5开始获取1个字符长度
let str = 'abcdefg';  		 
console.log(str.substr(1,5));  // bcdef
console.log(str.substr(5,1));  // f

第3种情况:substr(-3)

// substr(-3);                将传入的负值与字符串的长度相加。
let str = 'abcdefg';         //相当于substr(4);   (-3) + str.lenght(7) = 4 
console.log(str.substr(-3));  //efg

第4种情况:substr(2,-5)

// substr(2,-5);             //表示从下标2开始,返回0个字符长度,所以为空字符。
let str = 'abcdefg';               // 该方法会把第二个参数转换为0。 相当于substr(2,0);
					             // 相当于返回包含零个字符的字符串
console.log(str.substr(2,-5));  // " " 空字符
posted on 2022-01-01 15:22  Steven_YF  阅读(106)  评论(0编辑  收藏  举报