替换特定位置的字符

本文关键字:字符 位置 定位 替换 | 更新日期: 2023-09-27 18:09:58

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

输入例子:

2014 - 01 - 07 15.26.46.000452

我需要将其转换为我可以使用的东西(将最后的'-'替换为空格和前2 ')。

2014-01-07 15:26:46.000452

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

有人能帮我解决这个问题吗?(另外,我想要一个关于如何&

替换特定位置的字符

您可以使用DateTime来解析它。按自定义日期和时间格式字符串ParseExact

DateTime dt = DateTime.ParseExact( "2014-01-07-15.26.46.000452", 
                                   "yyyy-MM-dd-H.m.s.ffffff",
                                   System.Globalization.CultureInfo.InvariantCulture);

看起来不太漂亮,但效果很好:

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

它只是把所有的数字去掉,然后构造你想要的日期。