2010-07-26 57 views
0

我繼承,像這樣創建的DateTime對象散落基本代碼:日期時間轉換正則表達式C#

DateTime d = Convert.ToDateTime("2008-02-05"); 

當測試是在紐約的服務器運行,由於該字符串的文化,這是失敗。我想將它們轉換爲更明智的格式:

DateTime d = new DateTime(2008,02,05); 

我寫了一個VS宏,一個將它們轉換的時間,但我想知道,如果有人可以幫我寫個正則表達式,這樣我可以找到和替換他們批量?

+0

子你應該總是指定正則表達式,你使用的味道,尤其是如果它的Visual Studio;它的語法甚至是正則表達式的標準。 ;) – 2010-07-26 20:59:13

回答

0

經過對奧術VS查找/替換正則表達式命令的一些研究,它不是太難,威廉的答案很長的路要走。我:

//find 
Convert\.ToDateTime\(\"{[0-9]^4}-{[0-9]+}-{[0-9]+}\"\) 

//replace 
new DateTime(\1, \2, \3) 
+1

只是爲了記錄(因爲模式的發生不太可能):請注意,此正則表達式的「Convert.ToDateTime」部分實際上會匹配「Convert [ANY CHARACTER] ToDateTime」。如有必要,將其更改爲「Convert \ .ToDateTime」以避免它。 – 2010-07-26 11:55:56

2

假設他們(地方即沒有額外的空間在支架和/或其他位置之間)都是以相同的格式,然後搜索:

Convert\.ToDateTime\("(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2})"\); 

,並替換爲:

new DateTime(${year}, ${month}, ${day}); 

請注意,這並不反映在聲明的上下文中。 這是火和遺忘,在任何情況下,取代任何地方的任何和每一個發生。

+0

@robyaw:爲什麼要麻煩? – 2010-07-26 20:37:48

0

你嘗試使用代替正則表達式

string dateString = "2008-07-26" 
string.Format("{0}-{1}-{2}",dateString.Substring(0,4),dateString.Substring(5,2),dateString.Substring(8,2));