slice,substring,substr三个函数都是截取字符串。
slice方法:接受两个参数,即起始位置与终点位置;
"hello,world".slice(1,3) //"el";
substring方法:接受两个参数,即起始位置与终点位置;
"hello,world".substring(1,3) //"el";
substr方法:接受两个参数,即起始位置与字符串长度;
"hello,world".substr(1,3) //"ell";
从栗子中可以看出 substr 和其他两个的差别,substr第二个参数指定截取的长度,slice和substirng第二个参数指定截取的结束位置;
即:slice(start, end); // 参数可为负数。第二个参数是指定结束位置。
substring(start, end); // 参数为负数被替换成0。交换参数位置,小的在前。第二个参数是指定结束位置。
substr(start, length); // 参数可为负数。第二个参数是指定截取长度。
slice和substring的差别在于slice的参数可以是负数,而substring不行。
please继续看:
var str = 'hello,javascript';
// substring会取start和end中较小的值为start
str.substring(3, 2); // 'l'
str.substring(2, 3); // 'l'
// 二者相等返回空字符串
str.substring(3,3); // ''
// 任何一个参数为负数被替换为0, 相当于 s.substring(0, 2);
str.substring(-1, 2); // 'he'
// 相当于 s.substring(0, 0);
str.substring(-1, -2); // ''
substr的参也可以为负数,当第一个参数为负数时,会从尾部算起,-1表示倒数第一个,-2表示倒数第2个...。第二个为负值是始终返回控制符串。
str.substr(-2, 1); // 'p'
str.substr(-2, 0); // '' 第二个参数表示的是 长度 length 0 所以返回 空字符串
str.substr(-2, -1); // '' 第二个参数表示的是 长度 length -1 所以返回 空字符串
// 第一个参数为负数时,绝对值大于字符串长度时替换为0
str.substr(-20, 2); // 'he'
1:slice方法可接受两个为负值的参数:
str.slice(-5, -2)//"cri" 因为第二个参数是 结束位置 不是长度
2:但无论有几个参数为负值,第一参数对应字符所在位置必须在第二参数对应字符所在位置的左边,否则返回空字符串(即不能逆向):
str.slice(-2,-5) //''
str.slice(-5,-2) //'cri'
str.slice(-1,1)//''
str.slice(1,-1)//"ello,javascrip"
网友评论