Audition icon indicating copy to clipboard operation
Audition copied to clipboard

substring substr slice的区别小总结

Open frehaiku opened this issue 8 years ago • 0 comments

substring substr slice的区别

参数不为负数时

slicesubstring的作用相同,即第一个参数为开始截取字符串的索引(包含),第二个参数为截止截取字符串的索引(不包含)。如:

var str = 'abcdefg'
str.slice(1,5) // bcde
str.substring(1,5) // bcde

substr的第一个参数是开始截取的字符串的索引(包含),第二个参数为要截取的字符串长度。如:

var str = 'abcdefg'
str.substr(1,5) // bcdef

参数为负数时

第一个参数为负数时

slicesubstr的表现为将这负数+该字符串的长度,然后再计算。如:

var str = 'abcdefg'
str.slice(-3)   // efg
str.substr(-3) // efg

substring的表现为将负数转换成0。如:

var str = 'abcdefg'
str.substring(-3)   // abcdefg

第二个参数为负数时

与第一个参数为负数时的行为类似,但又有点不同。substring如果第一个参数为正数,第二个参数为负数,第二个参数会首先被转换为0。由于substring方法会将较小的数作为开始的位置,将较大的数作为结束的位置。因此两个参数会交换位置。如:

var str = 'abcdefg'
str.substring(3, -3)   // abc

另一种情况,在slicesubstr函数中第二个参数的负数转换为正数后比第一个参数还大的话。将返回空字符串。

var str = 'abcdefg'
str.slice(5, -3)   // ''
str.substr(5, -3)   // ''

frehaiku avatar Aug 07 '17 08:08 frehaiku