What is the difference between substr and substring?
两者有什么区别
1 | alert("abc".substr(0,2)); |
和
1 | alert("abc".substring(0,2)); |
它们似乎都输出"ab"。
区别在于第二个论点。
链接?
https://developer.mozilla.org/en/javascript/reference/global_objects/string/substr
https://developer.mozilla.org/en/javascript/reference/global_objects/string/substring
1 2 | alert("abc".substr(1,2)); // returns"bc" alert("abc".substring(1,2)); // returns"b" |
您可以记住,
从0开始时,可以使用任一方法。
正如Yatima2975的回答中所暗示的,还有一个额外的区别:
来自MDN:
If start is negative, substr() uses it as a character index from the
end of the string.
因此,总结功能差异:
我最近遇到的另一个问题是,在IE 8中,
关于这个主题的更多信息可以在这里找到。
主要区别在于
substr()允许您指定返回的最大长度
substring()允许您指定索引,第二个参数不包含在内。
SUBSTR()和SUBString()之间还有一些附加的微妙之处,例如处理相等参数和负参数。还要注意,substring()和slice()是相似的,但并不总是相同的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | //*** length vs indices: "string".substring(2,4); //"ri" (start, end) indices / second value is NOT inclusive "string".substr(2,4); //"ring" (start, length) length is the maximum length to return "string".slice(2,4); //"ri" (start, end) indices / second value is NOT inclusive //*** watch out for substring swap: "string".substring(3,2); //"r" (swaps the larger and the smaller number) "string".substr(3,2); //"in" "string".slice(3,2); //"" (just returns"") //*** negative second argument: "string".substring(2,-4); //"st" (converts negative numbers to 0, then swaps first and second position) "string".substr(2,-4); //"" "string".slice(2,-4); //"" //*** negative first argument: "string".substring(-3); //"string" "string".substr(-3); //"ing" (read from end of string) "string".slice(-3); //"ing" |
差异是第二个参数。他们的第二个参数,虽然这两个数字,却都期望两个不同的东西:
使用子字符串时,第二个参数是第一个不包括的索引:
1 2 3 4 5 | var s ="string"; s.substring(1, 3); // would return 'tr' var s ="another example"; s.substring(3, 7); // would return 'ther' |
使用SUBSTR时,第二个参数是要包含在子字符串中的字符数:
1 2 3 4 5 | 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方法都有性能优势。请相应地使用这些功能。
子串():它有两个参数"开始"和"结束"。
- start参数是必需的,并指定启动位置提取。
- 结束参数是可选的,并指定提取应结束。
如果未指定结束参数,则提取从开始位置到字符串结束的所有字符。
1 2 3 4 5 | var str ="Substring Example"; var result = str.substring(0, 10); alert(result); Output : Substring |
如果start参数的值大于end参数的值,则此方法将交换这两个参数。这意味着开始将用作结束,结束将用作开始。
1 2 3 4 5 | var str ="Substring Example"; var result = str.substring(10, 0); alert(result); Output : Substring |
substr():它有两个参数"start"和"count"。
start参数是必需的,并指定启动位置提取。
count参数是可选的,指定提取液。
1 2 3 4 5 6 | var str ="Substr Example"; var result = str.substr(0, 10); alert(result); Output : Substr Exa |
如果未指定count参数,则提取从字符串开始位置到结束位置的所有字符。如果count为0或负数,则返回空字符串。
1 2 3 4 5 | var str ="Substr Example"; var result = str.substr(11); alert(result); Output : ple |
最大的区别是,