概述
今天在写程序的时候发现js中slice也能用来截取字符串,以前都是用substr或substring,于是想着拿它们来对比一下,它们都可以接受两个参数,第一个是开始截取的位置,默认为0,第二个下文具体介绍验证代码地址:github.com/fanxuewen/e…
一、只传第一个参数
当第一个参数为正数,它们是没有区别的
let str='好好学习,天天向上';
console.log('substr---:',str.substr(2));
console.log('substring:',str.substring(2));
console.log('slice----:',str.slice(2))
复制代码
当第一个参数为负数时,对于substring如果参数小于 0 或为 NaN,则被当作 0,而substr和slice则是从后向前数。
let str='好好学习,天天向上';
console.log('substr---:',str.substr(-2));
console.log('substring:',str.substring(-2));
console.log('slice----:',str.slice(-2));
复制代码
二、两个参数都传
两参数都为正数,且第二个大于第一个时。substr是从第一个参数开始的位置起进行截取,第二个参数代表截取的长度;而substring和slice的两个参数表示截取位置的索引,包括开始,但不包括结尾
let str='好好学习,天天向上';
console.log('substr---:',str.substr(2,4));
console.log('substring:',str.substring(2,4));
console.log('slice----:',str.slice(2,4));
复制代码
两参数都为正数,且第二个
小于第一个时。通过和上面的对比可以看出substr的第二个参数总是代表的是截取的长度;substring的两个参数表示的是截取的索引(结果只包含索引值小的);slice的两个参数都是正数且第二个参数小于第一个时会返回空(注意当第二参数是负数,代表的是从后向前数,如果数过来的索引大于第一个参数,还是截取的包括开始但不包括结束的字符串哟)。
let str='好好学习,天天向上';
console.log('substr---:',str.substr(2,1));
console.log('substring:',str.substring(2,1));
console.log('slice----:',str.slice(2,1));
复制代码
其他情况自行验证........