substr和substring有什么区别?

之间有什么区别

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

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

它们似乎都输出“ab”。

287799 次浏览

区别在于第二个参数。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

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

更新:MDN考虑substr遗产。

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

您可以记住substring(带有<强>i)需要ndices,还有另一种字符串提取方法,slce(带有<强>i)。

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

我最近遇到的另一个问题是,在IE 8中,"abcd".substr(-1)错误地返回"abcd",而Firefox 3.6应该返回"d"

有关此主题的更多信息,请参阅这里

正如yatima2975的答案所暗示的,还有一个额外的区别:

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

MDN

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

所以总结一下功能上的区别:

substring(begin-offset, end-offset-exclusive),其中开始偏移为0或更大

substr(begin-offset, length)其中开始偏移也可以为负

区别在于第二个参数。他们的第二个参数,虽然都是数字,但期待两个不同的东西:

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

最大的区别是,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"  

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

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

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

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

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

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

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

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

  • 计数参数是可选的,并指定要执行的字符数提取。

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

Output : Substr Exa

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

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

substring(start Index, endIndex(不包括))//开始索引//结束索引

substr(start Index,有多少个字符)

const string = 'JavaScript';
console.log('substring(1,2)', string.substring(1,2)); // aconsole.log('substr(1,2)', string.substr(1,2)); // av
let str = "Hello World"
console.log(str.substring(1, 3))  // el -> Excludes the last indexconsole.log(str.substr(1, 3))  // ell -> Includes the last index

编辑:这个答案是关于R编程的

以下是substr()和substring()之间的主要区别:

  1. substr()有参数开始和停止,而子字符串作为参数first和last。

    substr(x, start, stop)

substring(text, first, last = 1000000L)

示例

substr("abcdef", start = 2, stop=4)[1] "bcd"
substring("abcdef", first = 2, last = 4)[1] "bcd"
  1. substring函数有一个大的默认值[1000000L]的'最后'参数,所以你可以跳过指定,而substr函数需要你指定停止参数的值。

示例

substr("abcdef", start = 2)Error in substr("abcdef", start = 2) :argument "stop" is missing, with no default
substring("abcdef", first = 2)[1] "bcdef"
  1. 如果将substr函数应用于多个起始点或停止点,则该函数仅使用第一个条目(即停止点1),而substring函数将提取多个可能的字符串。

示例

> substr('abcdef', 1:3, 5)[1] "abcde"> substr('abcdef', 1:3, 5:6)[1] "abcde"> substr('abcdef', 1, 5:6)[1] "abcde"> substring('abcdef', 1:3, 5)[1] "abcde" "bcde"  "cde"> substring('abcdef', 1, 5:6)[1] "abcde"  "abcdef"> substring('abcdef', 1:3, 5:6)[1] "abcde" "bcdef" "cde"

有人提到使用负索引/零。两者都被substr()和substring()接受。

示例

> substr('abcdef', -2, 3)[1] "abc"> substring('abcdef', -2, 3)[1] "abc"> substring('abcdef', 0, 3)[1] "abc"> substr('abcdef', 0, 3)[1] "abc"

重要提示使用substr()或substring()进行字符串替换

替换需要与数据的替换部分具有相同数量的字符。如果你想用不同长度的字符串替换子字符串,你可以看看gsub()函数。

P. S.我正在使用R版本4.0.4