我有这个字符串" Date.2014.07.04"
然后,如果我想得到" 07"使用正则表达式从上面的字符串。
我该怎么做?
我不想使用拆分。
为什么我不想使用拆分?因为当我们拆分时,结果将是字符串数组。通常我们会尝试获取我们想要的数组索引。在我的情况下,它将是
var date = "Date.2014.07.04";
date.Split('.')[2];
但是,我们要将日期更新为新字符串(全部删除'。')。
var date = "Date20140704";
date.Split('.')[2];
这会引发错误,因为它无法找到索引编号2.
通过使用正则表达式,此错误不会发生,如果我们想要的模式无法在字符串中找到,它将只返回空字符串。 :)
答案 0 :(得分:6)
您最好使用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];
答案 1 :(得分:1)
这样做:
"Date.2014.07.04".Split('.')[2];
由于您坚持使用Regex,请执行以下操作:
var value = Regex.Match("Date.2014.07.04",@"(?<=\w{4}\.\d{4}\.)\d+").Value
答案 2 :(得分:0)
使用像ParseExact
或TryParse
或TryParseExact
之类的日期时间函数是一个很好的建议,因为它也会验证每个部分。但是,如果你真的需要正则表达式,看看这个,它也将验证月份部分:
(0?[1-9]|1[0-2])\.\d{2}$