使用正则表达式从字符串日期获取子字符串
本文关键字:字符串 日期 获取 正则表达式 | 更新日期: 2023-09-27 17:56:57
我有这个字符串"Date.2014.07.04"
然后,如果我想使用正则表达式从上面的字符串中获取"07"。
我该怎么做?
我不想使用拆分。
为什么我不想使用拆分?因为当我们拆分时,结果将在字符串数组中。通常我们会尝试获取我们想要的数组索引。就我而言,这将是
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 month = strDate.Split('.')[2];
只需这样做:
"Date.2014.07.04".Split('.')[2];
既然你坚持使用正则表达式,那就这样做:
var value = Regex.Match("Date.2014.07.04",@"(?<='w{4}'.'d{4}'.)'d+").Value
使用日期时间函数(如 ParseExact
或 TryParse
或 TryParseExact
等)是一个很好的建议,因为它也会验证每个部分。但是如果你真的需要正则表达式,看看这个,它也将验证月份部分:
(0?[1-9]|1[0-2])'.'d{2}$