JavaScript Substr() 的意外结果

Unexpected Result With JavaScript Substr()

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

The following works as expected. y = 2017

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

But... the following doesn't work. It should return '05' but instead it returns 0505. m = 0505

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

谁能给我解释一下这是怎么回事?

谢谢,

内森

.substr(4,6) 方法 returns 6 个字符从索引 4 开始。请改用 .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);

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

您的代码应如下所示:

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

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

您可能会将它与采用开始索引和结束索引两个参数的 .substring() 方法混淆。

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

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

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

在控制台中您可以看到:

"ABCDEFGHIJKL".substr(0,4)
"ABCD"

"ABCDEFGHIJKL".substr(4,6)
"EFGHIJ"

"ABCDEFGHIJKL".substr(4,2)
"EF"

所以你想要的是

.substr(4,2)