我繼承,像這樣創建的DateTime對象散落基本代碼:日期時間轉換正則表達式C#
DateTime d = Convert.ToDateTime("2008-02-05");
當測試是在紐約的服務器運行,由於該字符串的文化,這是失敗。我想將它們轉換爲更明智的格式:
DateTime d = new DateTime(2008,02,05);
我寫了一個VS宏,一個將它們轉換的時間,但我想知道,如果有人可以幫我寫個正則表達式,這樣我可以找到和替換他們批量?
我繼承,像這樣創建的DateTime對象散落基本代碼:日期時間轉換正則表達式C#
DateTime d = Convert.ToDateTime("2008-02-05");
當測試是在紐約的服務器運行,由於該字符串的文化,這是失敗。我想將它們轉換爲更明智的格式:
DateTime d = new DateTime(2008,02,05);
我寫了一個VS宏,一個將它們轉換的時間,但我想知道,如果有人可以幫我寫個正則表達式,這樣我可以找到和替換他們批量?
經過對奧術VS查找/替換正則表達式命令的一些研究,它不是太難,威廉的答案很長的路要走。我:
//find
Convert\.ToDateTime\(\"{[0-9]^4}-{[0-9]+}-{[0-9]+}\"\)
//replace
new DateTime(\1, \2, \3)
只是爲了記錄(因爲模式的發生不太可能):請注意,此正則表達式的「Convert.ToDateTime」部分實際上會匹配「Convert [ANY CHARACTER] ToDateTime」。如有必要,將其更改爲「Convert \ .ToDateTime」以避免它。 – 2010-07-26 11:55:56
假設他們(地方即沒有額外的空間在支架和/或其他位置之間)都是以相同的格式,然後搜索:
Convert\.ToDateTime\("(?<year>[0-9]{4})-(?<month>[0-9]{2})-(?<day>[0-9]{2})"\);
,並替換爲:
new DateTime(${year}, ${month}, ${day});
請注意,這並不反映在聲明的上下文中。 這是火和遺忘,在任何情況下,取代任何地方的任何和每一個發生。
@robyaw:爲什麼要麻煩? – 2010-07-26 20:37:48
你嘗試使用代替正則表達式
string dateString = "2008-07-26"
string.Format("{0}-{1}-{2}",dateString.Substring(0,4),dateString.Substring(5,2),dateString.Substring(8,2));
子你應該總是指定正則表達式,你使用的味道,尤其是如果它的Visual Studio;它的語法甚至是正則表達式的標準。 ;) – 2010-07-26 20:59:13