2014-06-24 86 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這可能會更好。另一方面,我也試圖理解正則表達式。此解決方案運行良好,但我想試用正則表達式因此我贊成它。 –