【问题标题】:What is the difference between slice() and substr() in JavaScript?JavaScript 中的 slice() 和 substr() 有什么区别?
【发布时间】:2011-05-31 14:00:56
【问题描述】:

请问JavaScript中的字符串对象slice()substr()有什么区别?

【问题讨论】:

    标签: javascript slice substr


    【解决方案1】:

    他们有不同的签名,.slice()是:

    string.slice(beginIndex, endIndex)
    

    .substr() 是:

    string.substr(beginIndex, length);
    

    例如,如果我们有"1234" 并且想要"23",它会是:

    "1234".slice(1,3)
    //or...
    "1234".substr(1,2)
    

    对于较少使用的索引,它们也有不同的行为,请查看 .slice().substr() 的 MDC 文档以获取完整描述。

    【讨论】:

    【解决方案2】:
    1. String.slice(begin, end)

      此方法会将文本从begin 剪切为end 字符,例如:

      alert("Hello World!".slice(1, 8)); // ello Wo
      
    2. String.substr(begin, length)

      此方法会将文本从begin 剪切为begin + length char,例如:

      alert("Hello World!".substr(1, 8)); // ello Wor
      

    【讨论】:

      【解决方案3】:
      var str="Hello world!";
      document.write(str.substring(3,7)+"<br />");
      document.write(str.slice(3,7)+"<br />");
      document.write(str.substr(3,7));
      

      结果:

      lo w
      lo w
      lo worl
      

      【讨论】:

        【解决方案4】:

        我认为str.slice()str.substr()的区别在于第二个参数:

        .slice() 采用 EndIndex,而 .substr() 采用以下长度:

        .slice(StartIndex,EndIndex).substr(StartIndex,length).

        【讨论】:

          【解决方案5】:

          子字符串()

          1.如果start等于stop,则返回一个空字符串。 2.如果省略stop,则将字符提取到字符串的末尾。 3.如果开始>停止,则子字符串将交换这两个参数。 4.如果任一参数大于字符串的长度,任一参数都将使用字符串的长度。 5.如果任一参数小于0或为NaN,则将其视为0。

          切片()

          1.如果start等于stop,则返回一个空字符串,与substring()一模一样。 2.如果stop被省略,slice将字符提取到字符串的末尾,就像substring()一样。 3.如果 start > stop, slice() 不会交换 2 个参数。 4.如果任一参数大于字符串的长度,则任一参数都将使用字符串的长度,与 substring() 完全相同。

          【讨论】:

            猜你喜欢
            • 2017-10-01
            • 2018-08-13
            • 1970-01-01
            • 2015-12-10
            • 2012-04-24
            • 1970-01-01
            • 2020-11-28
            • 2011-09-28
            相关资源
            最近更新 更多