【问题标题】:Unexpected Result With JavaScript Substr() [duplicate]JavaScript Substr()的意外结果[重复]
【发布时间】:2017-10-04 10:40:20
【问题描述】:

我在 JavaScript 中遇到了 substr() 的问题。
请看下面的代码。

以下按预期工作。 y = 2017

var add_date = "20170505";
var y = add_date.substr(0, 4);
alert(y);

但是...以下不起作用。它应该返回 '05' 但它返回 0505。m = 0505

var add_date = "20170505";
var m = add_date.substr(4, 6);
alert(m);

谁能解释我怎么了?

谢谢,

内森

【问题讨论】:

  • @exebook 如果我不知道子字符串存在怎么办? ??????
  • 即使不知道substring 的存在,您也只需进行少量研究即可得知substr 的工作方式与您想象的不同。

标签: javascript substr


【解决方案1】:

.substr(4,6) 方法返回从索引 4 开始的 6 个字符。请改用.substring

var add_date = "20170505",
    y = add_date.substring(0, 4);
    console.log(y);


var add_date = "20170505",
    m = add_date.substring(4, 6);
    console.log(m);

【讨论】:

    【解决方案2】:

    JavaScript 的 substr 命令的语法是:string.substr(start, length)。所以这行代码应该是:

    var m = add_date.substr(4, 2);
    

    【讨论】:

      【解决方案3】:

      String.substr的第二个参数指定要提取的字符数

      您的代码应如下所示:

      var add_date = "20170505";
      var m = add_date.substr(4, 2);
      alert(m);
      

      【讨论】:

        【解决方案4】:

        substr() 有两个参数,用于指定起始索引和要提取的长度。

        您可能会将它与 .substring() 方法混淆,该方法接受开始索引和结束索引两个参数。

        【讨论】:

          【解决方案5】:

          SUBSTR函数的参数是start和length,不是start和end

          在控制台中你可以看到:

          "ABCDEFGHIJKL".substr(0,4)
          "ABCD"
          
          "ABCDEFGHIJKL".substr(4,6)
          "EFGHIJ"
          
          "ABCDEFGHIJKL".substr(4,2)
          "EF"
          

          所以你想要的是

          .substr(4,2)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-02-19
            • 2011-09-04
            • 1970-01-01
            • 2014-12-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多