Регулярное преобразование даты и времени в C # - PullRequest
0 голосов
/ 26 июля 2010

Я унаследовал кодовую базу, усеянную объектами DateTime, созданными так:

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

, которые не выполняются при запуске тестов на серверах NY из-за культуры строки.Я хочу преобразовать их в более разумный формат:

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

Я написал макрос VS, который конвертирует их по одному, но мне было интересно, может ли кто-нибудь помочь мне написать регулярное выражение, чтобы я могнайти и заменить их оптом?

Ответы [ 3 ]

2 голосов
/ 26 июля 2010

Предполагая, что они все в одном и том же формате (то есть где-то между скобками и / или в других местах нет дополнительных пробелов), найдите:

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

и заменить на:

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

Обратите внимание, что в любом случае это не относится к контексту оператора. Это огонь и забудьте, заменяя все и всякое повсюду, в любом контексте.

0 голосов
/ 26 июля 2010

Вы пытались использовать подстроки вместо регулярных выражений

string dateString = "2008-07-26"
string.Format("{0}-{1}-{2}",dateString.Substring(0,4),dateString.Substring(5,2),dateString.Substring(8,2));
0 голосов
/ 26 июля 2010

После некоторого исследования загадочных команд регулярных выражений VS Find / Replace это было не слишком сложно, и ответ Виллема очень помог. Я получил:

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

//replace
new DateTime(\1, \2, \3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...