替换特定位置的字符

时间:2014-06-24 09:03:24

标签: c# regex string

我的输入是一个表示机器执行时间和日期的字符串。问题是此字符串格式错误,因此我无法使用DateTime.Parse将其转换为DateTime对象。

输入示例:

  

2014-01-07-15.26.46.000452

我需要将它转换为我可以使用的东西(用空格替换最后的' - ',用'​​:'替换前2'。'),如下所示:

  

2014-01-07 15:26:46.0​​00452

我认为我应该使用正则表达式来解决这个问题,因为我需要替换特定位置的字符,因此myString.Replace不会有任何好处。不幸的是,我使用正则表达式的知识几乎没有,我找不到任何与我的问题相符的例子。

任何人都可以帮我解决这个问题吗? (另外,我想解释一下如何以及为什么这个正则表达式起作用)

2 个答案:

答案 0 :(得分:5)

您可以使用DateTime.ParseExact

Custom Date and Time Format Strings来解析它
DateTime dt = DateTime.ParseExact( "2014-01-07-15.26.46.000452", 
                                   "yyyy-MM-dd-H.m.s.ffffff",
                                   System.Globalization.CultureInfo.InvariantCulture);

答案 1 :(得分:2)

它看起来不是很漂亮,但完成了这项工作:

string yourString = "2014-01-07-15.26.46.000452";
string newString = Regex.Replace(yourString, @"(\d+)-(\d+)-(\d+)-(\d+).(\d+).(\d+).(\d+)", "$1-$2-$3 $4:$5:$6.$7");

除了周围的胡言乱语之外,它只会削减所有数字,并构建你想要的日期。