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
substr
( MDN )将参数作为(from, length)
。
substring
( MDN )将参数作为(from, to)
。
alert("abc".substr(1,2)); // returns "bc" alert("abc".substring(1,2)); // returns "b"
你可以记得substring
需要索引,还有另一个string提取方法slice 。
从0开始时,可以使用任何一种方法。
我最近遇到的另一个问题是,在IE 8中, "abcd".substr(-1)
错误地返回"abcd"
,而Firefox 3.6返回"d"
因为它应该。 slice
在两者上都能正常工作
更多关于这个主题可以在这里find。
正如yatima2975的回答暗示的那样,还有一个不同之处:
substr()
接受一个负的开始位置作为从string末尾的偏移量。 substring()
不。
来自MDN :
如果start是负数,substr()将它用作string末尾的字符索引。
因此总结function差异:
substring(begin-offset, end-offset-exclusive)
其中begin-offset是0
或更大
substr(begin-offset, length)
其中begin-offset也可以是负数
不同的是第二个参数。 他们的第二个参数,两个数字,都期待着两个不同的东西:
当使用子string时,第二个参数是第一个不包含的索引:
var s = "string"; s.substring(1, 3); // would return 'tr' var s = "another example"; s.substring(3, 7); // would return 'ther'
当使用substr时,第二个参数是要包含在子string中的字符数:
var s = "string"; s.substr(1, 3); // would return 'tri' var s = "another example"; s.substr(3, 7); // would return 'ther ex'
Slice vs Substr vs Substring vs []方法
每种JavaScript方法都有性能优势。 请相应地使用这些function。
主要区别在于
substr()允许你指定返回的最大长度
substring()允许你指定索引,第二个参数不是包含的
substr()和substring()之间还有一些额外的细节,比如处理相同的参数和消极的参数。 还要注意substring()和slice()是相似的,但并不总是相同的。
length vs indices "string".substr(2,4); // "ring" (start, length) length is the maximum length to return "string".substring(2,4); // "ri" (start, end) indices / second value is NOT inclusive "string".slice(2,4); // "ri" (start, end) indices / second value is NOT inclusive watch out for substring swap "string".substr(3,2); // "in" "string".substring(3,2); // "r" (swaps the larger and the smaller number) "string".slice(3,2); // "" (just returns "") handling negative arguments "string".substr(2,-4); // "" "string".substring(2,-4); // "st" (converts negative numbers to 0, then swaps first and second position) "string".slice(2,-4); // ""
最大的区别是, substr()
是一个可以继续使用的已过时的方法 ,但是应该谨慎使用,因为它们预计将在未来的某个时间被完全删除。 你应该努力从你的代码中删除它们的使用。 substring()
方法成功并指定了前一个。