[英]How to get ymd by substring with JavaScript
使用此代码获取ymd:
var ymd = '20190716'; var year = ymd.substring(0, 4); var month = ymd.substring(4, 2); var day = ymd.substring(6, 2); console.log(year); console.log(month); console.log(day);
我认为它是从索引到长度获取子字符串的正确方法。 所以......
想:
2019
07
16
但得到了:
2019
19
1907
为什么?
检查文档 :
substring()方法返回开始和结束索引之间或字符串末尾的字符串部分。
和
如果indexStart大于indexEnd,那么substring()的效果就好像交换了两个参数一样。
所以当你传递4, 2
或6, 2
,你说你希望结束索引在开始索引之前 ,所以参数被切换,你得到索引2到4,索引2到6。
也许你想要substr
,它substr
你的期望:
substring()的参数表示起始和结束索引,而substr()的参数表示起始索引和返回字符串中包含的字符数。
var ymd = '20190716'; var year = ymd.substr(0, 4); var month = ymd.substr(4, 2); var day = ymd.substr(6, 2); console.log(year); console.log(month); console.log(day);
但它(有点)已被弃用。 我更喜欢substring
或slice
,并传递指标。
如果indexStart大于indexEnd,则substring()方法交换其两个参数,这意味着仍然返回一个字符串。 如果是这种情况,slice()方法返回一个空字符串。
slice
的行为是一个更直观的IMO。
substring()
的第二个参数不是您想要获得的子字符串的长度,而是结束索引。
所以substring(4,2)
从索引4开始,到2结束。给你“19”
您还可以使用JavaScript正则表达式:
const date = "20190716"; const pattern = /(\\d{4})(\\d{2})(\\d{2})/; [result, year, month, day] = date.match(pattern); console.log(year, month, day);
第一捕获小组(\\ d {4})
\\d{4}
匹配一个数字(等于[0-9]) {4}
量词 - 恰好匹配4次 第二捕获组(\\ d {2})
\\d{2}
匹配一个数字(等于[0-9])
{2}
量词 - 恰好匹配2次
第三捕获组(\\ d {2})
\\d{2}
匹配一个数字(等于[0-9])
{2}
量词 - 恰好匹配2次
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.