//*** 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"
265
差异是第二个参数 . 他们的第二个参数,虽然两个数字,期待两个不同的东西:
使用substring时,第二个参数是第一个不包括的索引:
var s = "string";
s.substring(1, 3); // would return 'tr'
var s = "another example";
s.substring(3, 7); // would return 'ther'
使用substr时,第二个参数是要包含在子字符串中的字符数:
var s = "string";
s.substr(1, 3); // would return 'tri'
var s = "another example";
s.substr(3, 7); // would return 'ther ex'
8 回答
最大的区别是,substr()仍然是 a deprecated method 仍然可以使用,但应谨慎使用,因为它们预计将在未来的某个时间完全删除 . 您应该努力从代码中删除它们的使用 . 并且substring()方法成功并指定了前者 .
Slice vs Substr vs Substring vs [ ] Methods
每种javascript方法都有性能优势 . 请相应地使用这些功能 .
不同之处在于第二个论点 .
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)
.您可以记住
substring
获取索引,还有另一种字符串提取方法slice .从0开始时,您可以使用任一方法 .
我最近遇到的另一个问题是,在IE 8中,
"abcd".substr(-1)
错误地返回"abcd"
,而Firefox 3.6则应该返回"d"
.slice
在两者上都能正常工作 .有关此主题的更多信息,请参见here .
主要区别在于
substr()允许您指定要返回的最大长度
substring()允许您指定索引,第二个参数不包含
substr()和substring()之间还有一些细微之处,例如处理相等的参数和负参数 . 另请注意,substring()和slice()相似但并不总是相同 .
差异是第二个参数 . 他们的第二个参数,虽然两个数字,期待两个不同的东西:
使用substring时,第二个参数是第一个不包括的索引:
使用substr时,第二个参数是要包含在子字符串中的字符数:
正如在yatima2975的答案中暗示的那样,还有一个区别:
substr()
接受一个负起始位置作为从字符串末尾的偏移量 .substring()
没有 .从MDN:
总结一下功能差异:
substring(begin-offset, end-offset-exclusive)
其中begin-offset是0
或更高版本substr(begin-offset, length)
其中begin-offset也可能是负数