首页 文章

substr和substring有什么区别?

提问于
浏览
729

有什么区别

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

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

他们似乎都输出“ab” .

8 回答

  • 4

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

  • 7

    Slice vs Substr vs Substring vs [ ] Methods

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

  • -2

    不同之处在于第二个论点 . substring 的第二个参数是停止在(但不包括)的索引,但 substr 的第二个参数是要返回的最大长度 .

    链接?

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

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

  • 29

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

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

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

    从0开始时,您可以使用任一方法 .

  • 10

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

    有关此主题的更多信息,请参见here .

  • 805

    主要区别在于

    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"
    
  • 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'
    
  • 23

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

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

    MDN

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

    总结一下功能差异:

    substring(begin-offset, end-offset-exclusive) 其中begin-offset是 0 或更高版本

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

相关问题