协慌网

登录 贡献 社区

substr 和 substring 有什么区别?

有什么区别

alert("abc".substr(0,2));

alert("abc".substring(0,2));

他们似乎都输出 “ab”。

答案

区别在于第二个参数。 substring的第二个参数是停止在(但不包括)的索引,但substr的第二个参数是要返回的最大长度。

链接?

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substr

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring

substrMDN )将参数作为(from, length)
substringMDN )将参数作为(from, to)

alert("abc".substr(1,2)); // returns "bc"
alert("abc".substring(1,2)); // returns "b"

你可以记住substring需要索引,就像另一个字符串提取方法slice 一样

从 0 开始时,您可以使用任一方法。

正如在 yatima2975 的答案中暗示的那样,还有一个区别:

substr()接受一个负起始位置作为从字符串末尾的偏移量。 substring()没有。

来自MDN

如果 start 为负数,则 substr()将其用作字符串末尾的字符索引。

所以总结一下功能差异:

substring(begin-offset, end-offset-exclusive)其中 begin-offset 为0或更大

substr(begin-offset, length)其中 begin-offset 也可以是负数