第一反应是都是截取字符串的方法,好像平常使用的时候也没太注意区分这俩,今天看到正好来区分一下
- substring(start,[end])
- 如果省略end,那么截取的是从指定位置到末尾
var str = '123456789';
str.substring(1);//'23456789'
- substr(start,[length])
- 如果省略length,那么截取的是从指定位置到末尾
var str = '123456789';
str.substr(1);//'23456789'
嘿,这俩方法在省略第二个参数的情况下返回值是一样的
重点来了,他们俩的就靠第二个参数来区分了,其实光看传递名字就能知道了,但是有时候总会忘记文档。
首先是substring(ps:不接受负的参数)
str.substring(1,2);//'2'
str.substring(1,3);//'23'
string.substring(1,4);//'234'
它截取的结果是:从start开始取,到end结束,从0开始数,其中不包括end位置的字符
substr:
str.substr(1,2);//'23'
str.substr(1,3);/'234'
substr截取的从start开始指定长度的字符串
有意思的是substr可以传负的参数,传负的参数会从字符串末尾开始截取
str.substr(-1);//9
str.substr(-2);/89
str.substr(-5);//56789