js substr,slice,substring 的用法与区别

slice,substring,substr三个函数都是截取字符串。

先看方法的签名

slice(start, end); // 参数可为负数。第二个参数是指定结束位置。
substring(start, end); // 参数为负数被替换成0。交换参数位置,小的在前。第二个参数是指定结束位置。
substr(start, length); // 参数可为负数。第二个参数是指定截取长度。

从签名可以看出 substr 和其他两个的差别,substr第二个参数指定截取的长度,slice和substirng第二个参数指定截取的结束位置, 例:

var s = 'helloworld';
a.substr(2, 5); // 'llowo'
a.slice(2, 5); // 'llo'
a.substring(2, 5) // 'llo'

slice和substring的差别在于slice的参数可以是负数,而substring不行。

slice中的start如果为负数,会从尾部算起,-1表示倒数第一个,-2表示倒数第2个,此时end必须为负数,并且是大于start的负数,否则返回空字符串。slice的end如果为负数,同样从尾部算起,如果其绝对值超过原字符串长度或者为0,返回空字符串。

substring会取start和end中较小的值为start,二者相等返回空字符串,任何一个参数为负数被替换为0(即该值会成为start参数)。

// substring会取start和end中较小的值为start
s.substring(3, 2); // 'l'
s.substring(2, 3); // 'l'

// 二者相等返回空字符串
s.substring(3,3); // ''

// 任何一个参数为负数被替换为0, 相当于 s.substring(0, 2);
s.substring(-1, 2); // 'he'
// 相当于 s.substring(0, 0);
s.substring(-1, -2); // '' 

substr的参也可以为负数,当第一个参数为负数时,会从尾部算起,-1表示倒数第一个,-2表示倒数第2个…。第二个为负值是始终返回控制符串。

s.substr(-2, 1); // 'l'
s.substr(-2, 0); // ''
s.substr(-2, -1); // ''

// 第一个参数为负数时,绝对值大于字符串长度时替换为0
s.substr(-10, 2); // 'he'
    原文作者:c1生不换
    原文地址: https://segmentfault.com/a/1190000015800472
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞