substr和substring有什么区别?

时间:2010-09-19 11:40:10

标签: javascript substring

之间有什么区别
alert("abc".substr(0,2));

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

他们似乎都输出“ab”。

11 个答案:

答案 0 :(得分:863)

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

链接?

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substr

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring

答案 1 :(得分:287)

substrMDN)将参数设为(from, length) substringMDN)将参数设为(from, to)

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

您可以记住substring获取索引,还有另一种字符串提取方法slice

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

答案 2 :(得分:33)

正如在yatima2975的回答中暗示的那样,还有一个区别:

substr()接受负起始位置作为字符串末尾的偏移量。 substring()没有。

来自MDN

  

如果start为负数,则substr()将其用作来自的字符索引   字符串的结尾。

总结功能差异:

substring(begin-offset, end-offset-exclusive)其中,begin-offset为0或更高

substr(begin-offset, length)其中,begin-offset也可能是负数

答案 3 :(得分:25)

我最近遇到的另一个问题是,在IE 8中,"abcd".substr(-1)错误地返回"abcd",而Firefox 3.6则返回"d"slice可以正常使用。

有关此主题的更多信息,请访问here

答案 4 :(得分:12)

主要区别在于

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"        

答案 5 :(得分:7)

差异是第二个参数。他们的第二个参数,虽然两个数字,但期望两个不同的东西:

使用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'

答案 6 :(得分:4)

Slice vs Substr vs Substring vs [ ] Methods

每种javascript方法都有性能优势。请相应地使用这些功能。

答案 7 :(得分:3)

substring(): 它具有2个参数“开始”和“结束”。

  • 开始参数是必需的,它指定开始的位置 提取。
  • end 参数是可选的,它指定了 提取应该结束。

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

var str = "Substring Example";
var result = str.substring(0, 10);
alert(result);

Output : Substring

如果start参数的值大于end参数的值,则此方法将交换两个参数。这意味着开始将用作结束,结束将用作开始。

var str = "Substring Example";
var result = str.substring(10, 0);
alert(result);

Output : Substring

substr():它具有2个参数“开始”和“计数”。

  • 开始参数是必需的,它指定开始的位置 提取。

  • count参数是可选的,它指定要转换的字符数 提取。

var str = "Substr Example";
var result = str.substr(0, 10);
alert(result);


Output : Substr Exa

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

var str = "Substr Example";
var result = str.substr(11);
alert(result);

Output : ple

答案 8 :(得分:1)

子字符串(startIndex,endIndex(不包括))

substr(startIndex,多少个字符)

const string = 'JavaScript';

console.log('substring(1,2)', string.substring(1,2)); // a
console.log('substr(1,2)', string.substr(1,2)); // av

答案 9 :(得分:0)

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

答案 10 :(得分:0)

let str = "Hello World"

console.log(str.substring(1, 3))  // el -> Excludes the last index
console.log(str.substr(1, 3))  // ell -> Includes the last index