C#Regex转换为yyyyMMddhhmm

时间:2015-10-05 12:42:44

标签: c# regex

目前我正在使用以下RegEx将yyyyMMdd转换为yyyy-MM-dd:

Regex.Replace(inputString, @"(\w{4})(\w{2})(\w{2})", @"$1-$2-$3");

对Regex一无所知,我需要将yyyyMMddhhmm转换为yyyy-MM-dd hh:ss

有人可以帮我解决这个问题。 谢谢 罗德尼

2 个答案:

答案 0 :(得分:5)

请勿使用正则表达式或String - 但DateTime方法将String转换为DateTime并返回String

string dtStr = "20151005";
DateTime date = DateTime.ParseExact(dtStr, "yyyyMMdd", DateTimeFormatInfo.InvariantInfo);
string result = date.ToString("yyyy-MM-dd");

dtStr = "201510051445";
date = DateTime.ParseExact(dtStr, "yyyyMMddHHmm", DateTimeFormatInfo.InvariantInfo);
result = date.ToString(" yyyy-MM-dd hh:ss");

答案 1 :(得分:0)

  • \w用于匹配单个字词,例如AD13,在您的情况下是一点点有点奇怪。我希望\d只匹配数字。
  • 大括号{}用于计数。 {4}表示:匹配四次。
  • 圆括号()用于分组和捕获。

所以构造\d{4}意味着:匹配四位数。并且(\d{4})表示:将4位数字作为一个组匹配(在您的情况下:第一组)。

Regex.Replace(inputString, @"(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})", @"$1-$2-$3 $4:$5");

有关更多信息,请查看此处:https://msdn.microsoft.com/en-us/library/az24scfc(v=vs.110).aspx

当然,还有其他解决方案没有正则表达式来解析DateTime值,例如DateTime.ParseExact(...)DateTime.ToString(format)