JavaScript substr、substring和slice的区别
区别:
substr第2参数是从第1参数后第几位,也就是Length
如:
s='abcdefg';
s.substr(0,3)
// "abc"
s.substr(2,3)
// "cde"
substring第2参数是实际字符串的第几位,但是!
substring也是以两个参数中较小一个作为起始位置,较大的参数作为结束位置。
如:
s.substring(2,3)
// "c"
s.substring(2,5)
// "cde"
// 注意:有坑
s.substring(5,2)
// "cde"
slice和substring很像,但是区别在于负数
slice的负数从尾部开始算,我们正常人类逻辑,但
substring的负数干脆直接转为0!!
如:
s.slice(0,3)
// "abc"
s.slice(2,3)
// "c"
s.slice(2,-2) // 从开始2,到结尾2
// "cde"
s.substring(2,-2) // 负数直接干成0,然后从0作为最小,2作为最大
// "ab"
s.slice(-2,2)
// ""
s.substring(-2,2) // 负数直接干成0,然后从0作为最小,2作为最大
// "ab"
s.substr(-2,3) // substr的第二参数是从第一开始数,所以根本不能为负数!
// "fg"
总结
substr和slice区别
substr在于第二参数,也就是结束地址,substr结束地址是从第一参数后面开始数第几个!
slice在于第二参数,也就是结束地址,slice结束地址是整个字符串的位置!
substr和substring的区别
substr第二参数的结束位置从第一参数开始数第几个,但是不能为负数!
substring参数哪个小用哪个做开始,用大的做结束,且参数为负数直接变为0!!
slice和substring区别
slice在于第二参数,也就是结束地址,slice结束地址是整个字符串的位置!第二参数可为负数!
substring参数哪个小用哪个做开始,用大的做结束,且参数为负数直接变为0!!不可为负数!
完全总结
substring 参数负数变0,且哪个小,就用哪个做起点,哪个大,就用做终点!
substr 第二参数不能为负数,因为从第一参后开始数
slice 第二参数可以是负数,他的第二参数是绝对地址