字符串函数 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)); // " " 空字符
只要思想不滑坡,办法总比困难多!