2014-06-24 87 views
0

我的输入是表示机器执行时间和日期的字符串。问题是这个字符串格式不好,因此我不能使用DateTime.Parse将它转换为DateTime对象。

输入例:替换特定位置的字符

2014-01-07-15.26.46.000452

我需要将其转换的东西我可以(将最后的工作“ - ”用空间和第一2用 '' ':'),如下所示:

2014年1月7日15:26:46.0​​00452

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

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

回答

2

使用DateTime.ParseExact解析它,它看起来并不很漂亮,但这项工作:

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"); 

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

5

您可以通过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); 
+0

我更喜欢坚持使用正则表达式,但这也是一个不错的解决方案+1 –

+2

@TzahMama:也许我在扔我自己的眼镜,但这是更好的解决方案。 –

+1

@PatrickHofman这可能会更好。另一方面,我也试图理解正则表达式。此解决方案运行良好,但我想试用正则表达式因此我赞成它。 –