substrsubstring 都是获取给定字符串的子字符串的常用方法。

区别

两种方法都有两个参数。第一个参数表示子字符串起始位置的索引。第二个参数是不同的。

substr(startPosition, length)
substring(startPosition, endPosition)

如您所见,substrsubstring 的第二个参数分别是子字符串的长度和结束位置。给定一个 helloworld 字符串:

'helloworld'.substr(2, 4) // 'llow'
'helloworld'.substring(2, 4) // 'll'

substr 允许使用负数作为起始位置参数。

'helloworld'.substr(-2, 4) // 'ld'

另一方面,子字符串将使负开始位置变为 0(零):

'helloworld'.substring(-2, 5) // 'hello'
'helloworld'.substring(0, 5) // 'hello'

slice

slice 是获取子字符串的另一个方法。它没有被弃用为 substr,并且支持负索引。

'helloworld'.slice(2, 4) // 'll'
'helloworld'.slice(-10, 5) // 'hello'
'helloworld'.slice(-5) // 'world'