两者有什么区别

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

and

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

它们似乎都输出“ab”。


当前回答

substring (): 它有两个参数“start”和“end”。

开始参数是必需的,并指定开始的位置 提取。 结束参数为可选参数,用于指定 撤离应该结束。

如果没有指定end参数,则提取从开始位置到字符串结束的所有字符。

var str = "子字符串示例"; Var result = str.substring(0,10); 警报(结果); 输出:子字符串

如果start参数的值大于end参数的值,该方法将交换两个参数。这意味着start将被用作end, end将被用作start。

var str = "子字符串示例"; Var result = str.substring(10,0); 警报(结果); 输出:子字符串

substr():它有两个参数“start”和“count”。

开始参数是必需的,并指定开始的位置 提取。 Count参数是可选的,用于指定要处理的字符数 提取。

var str = "Substr示例"; Var result = str.substr(0,10); 警报(结果); 输出:Substr Exa

如果没有指定count参数,将提取从开始位置到字符串结束的所有字符。如果count为0或负数,则返回空字符串。

var str = "Substr示例"; Var result = str.substr(11); 警报(结果); 输出:ple

其他回答

substr (MDN)的参数为(from, length)。 substring (MDN)的参数为(from, to)。

更新:MDN考虑substr遗留问题。

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

你可以记住substring(带i)接受索引,就像另一个字符串提取方法slice(带i)一样。

当从0开始时,可以使用任何一种方法。

最大的区别是,substr()是一个仍然可以使用的已弃用方法,但应该谨慎使用,因为它们预计在未来的某个时候将被完全删除。您应该努力从代码中删除它们的使用。substring()方法成功并指定了前者。

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

链接?

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring

substring (): 它有两个参数“start”和“end”。

开始参数是必需的,并指定开始的位置 提取。 结束参数为可选参数,用于指定 撤离应该结束。

如果没有指定end参数,则提取从开始位置到字符串结束的所有字符。

var str = "子字符串示例"; Var result = str.substring(0,10); 警报(结果); 输出:子字符串

如果start参数的值大于end参数的值,该方法将交换两个参数。这意味着start将被用作end, end将被用作start。

var str = "子字符串示例"; Var result = str.substring(10,0); 警报(结果); 输出:子字符串

substr():它有两个参数“start”和“count”。

开始参数是必需的,并指定开始的位置 提取。 Count参数是可选的,用于指定要处理的字符数 提取。

var str = "Substr示例"; Var result = str.substr(0,10); 警报(结果); 输出:Substr Exa

如果没有指定count参数,将提取从开始位置到字符串结束的所有字符。如果count为0或负数,则返回空字符串。

var str = "Substr示例"; Var result = str.substr(11); 警报(结果); 输出:ple

我最近遇到的另一个问题是,在IE 8中,“abcd”.substr(-1)错误地返回“abcd”,而Firefox 3.6则返回“d”。Slice在两者上都能正常工作。

关于这个主题的更多信息可以在这里找到。