繁体   English   中英

如何通过JavaScript使用substring获取ymd

[英]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, 26, 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); 

但它(有点)已被弃用。 我更喜欢substringslice ,并传递指标。

如果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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM