之间有什么区别
alert("abc".substr(0,2));
和
alert("abc".substring(0,2));
They both seem to output “ab”.
之间有什么区别
alert("abc".substr(0,2));
和
alert("abc".substring(0,2));
They both seem to output “ab”.
Slice vs Substr vs Substring vs []方法
这些javascript方法均具有性能优势。请相应地使用这些功能。
最大的区别是,substr()
是一个过时的方法是仍然可以使用,但因为它们预计将在未来的某个时候完全除去应谨慎使用。您应该努力从代码中删除它们的使用。并且该substring()
方法成功并指定了前一种方法。
主要区别在于
substr()允许您指定要返回的最大长度
substring()允许您指定索引,第二个参数不包含在内
substr()和substring()之间还有一些其他的细微之处,例如对相等参数和负参数的处理。还要注意substring()和slice()相似,但并不总是相同。
//*** 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"
我最近遇到的另一个问题是,在IE 8中,"abcd".substr(-1)
错误地返回"abcd"
,而Firefox 3.6 "d"
则应返回。slice
都可以正常工作。
有关此主题的更多信息,请参见此处。
正如yatima2975的回答所暗示的,还有另外一个区别:
substr()
接受一个负的起始位置作为与字符串末尾的偏移量。 substring()
才不是。
从MDN:
如果start为负,则substr()将其用作字符串末尾的字符索引。
所以总结一下功能上的区别:
substring(begin-offset, end-offset-exclusive)
起始偏移0
量大于或等于
substr(begin-offset, length)
开始偏移也可能为负
区别在于第二个参数。的第二个参数substring
是要在(但不包括)处停止的索引,但是的第二个参数substr
是要返回的最大长度。
链接?
https://developer.mozilla.org/zh-CN/JavaScript/Reference/Global_Objects/String/substr
https://developer.mozilla.org/zh-CN/JavaScript/Reference/Global_Objects/String/substring
substring(): 它有2个参数“开始”和“结束”。
如果未指定end参数,则提取从开始位置到字符串结尾的所有字符。
如果start参数的值大于end参数的值,则此方法将交换两个参数。这意味着开始将用作结束,而结束将用作开始。
substr():它有2个参数“ start”和“ count”。
start参数是必需的,它指定开始提取的位置。
count参数是可选的,它指定要提取的字符数。
如果未指定count参数,则将提取从字符串的开始位置到字符串结尾的所有字符。如果count为0或负数,则返回一个空字符串。