JavaScript substr、substring和slice的区别
区别:
substr第2参数是从第1参数后第几位,也就是Length
如:
1 2 3 4 5 | s='abcdefg'; s.substr(0,3) // "abc" s.substr(2,3) // "cde" |
substring第2参数是实际字符串的第几位,但是!
substring也是以两个参数中较小一个作为起始位置,较大的参数作为结束位置。
如:
1 2 3 4 5 6 7 8 | s.substring(2,3) // "c" s.substring(2,5) // "cde" // 注意:有坑 s.substring(5,2) // "cde" |
slice和substring很像,但是区别在于负数
slice的负数从尾部开始算,我们正常人类逻辑,但
substring的负数干脆直接转为0!!
如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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 第二参数可以是负数,他的第二参数是绝对地址