繁体   English   中英

使用正则表达式从字符串日期获取子字符串

[英]Get substring from string date using regex

我有这个字符串“ Date.2014.07.04”

然后,如果我想使用正则表达式从上面的字符串中获取“ 07”。

我怎么做?

我不想使用拆分。

为什么我不想使用split? 因为当我们拆分时,结果将在字符串数组中。 通常,我们将尝试获取所需的数组索引。 就我而言

var date = "Date.2014.07.04";
date.Split('.')[2];

但是,可以说我们将日期更新为新字符串(删除所有“。”)。

var date = "Date20140704";
date.Split('.')[2];

因为找不到索引号2,这将引发错误。

通过使用正则表达式,不会发生此错误,并且如果在字符串中找不到我们想要的模式,它将仅返回空字符串。 :)

您最好解析日期,然后使用DateTime.ParseExact获取所需的部分,但必须删除Date. 从日期字符串开始。

DateTime dt = DateTime.ParseExact(strDate.Replace("Date.",""), "yyyy.MM.dd", CultureInfo.InvariantCulture);
int month = dt.Month;

您也可以使用string.Split

string month =  strDate.Split('.')[2];

只是这样做:

"Date.2014.07.04".Split('.')[2];

由于您坚持使用正则表达式,因此请执行以下操作:

var value = Regex.Match("Date.2014.07.04",@"(?<=\w{4}\.\d{4}\.)\d+").Value

最好使用日期时间函数(如ParseExactTryParseTryParseExact等),因为它也会验证每个部分。 但是,如果您确实需要正则表达式,请查看此正则表达式,它也将验证月份部分:

(0?[1-9]|1[0-2])\.\d{2}$

演示版

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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