2017-05-05 102 views
2

我遇到了substr()JavaScript问题。
请看下面的代码。意外的结果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); 

有人能解释我有什么不对?

谢谢,

+0

@exebook如果我不知道子字符串是什么存在? – Nathan

+0

即使不知道'substring'是否存在,它会花费最少的研究来了解'substr'不能像你以前那样工作。 – Shaggy

回答

4

.substr(4,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);

1

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

您的代码应该如下所示:

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

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

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

2

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

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

SUBSTR函数的参数是开始和长度,没有开始和结束

在控制台中,你可以看到这一点:

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

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

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

所以你想要的是

.substr(4,2)