Разбор дат с помощью регулярного выражения в C # - PullRequest
1 голос
/ 28 апреля 2010

Я работаю над приложением на C # и получаю строку с датой или частью даты, и мне нужно получить день, месяц и год для этой строки. Например:

string example='31-12-2010'
string day = Regex.Match(example, "REGULAR EXPRESSION FOR DAY").ToString();
string month = Regex.Match(example, "REGULAR EXPRESSION FOR MONTH").ToString()
string year = Regex.Match(example, "REGULAR EXPRESSION FOR YEAR").ToString()

day = "31"
month = "12"
year = "2010"

ex2: 
string example='12-2010'

string month = Regex.Match(example, "REGULAR EXPRESSION FOR MONTH").ToString()
string year = Regex.Match(example, "REGULAR EXPRESSION FOR YEAR").ToString()

month = "12"
year = "2010"

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 28 апреля 2010

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

DateTime temp = DateTime.Parse(example);

Теперь в вашем распоряжении множество полезных свойств. temp.Day например,

1 голос
/ 28 апреля 2010

DateTime.ParseExact() позволяет вам определить пользовательский формат строки, которую вы хотите проанализировать, и тогда у вас есть хороший DateTime объект для использования.
Но если вы говорите, что у вас могут быть странные форматы, такие как «год час: минута», я думаю, вы можете использовать RegEx.

    string example = "31-12-2010";

    Match m = Regex.Match(example, @"^(?<day>\d\d?)-(?<month>\d\d?)-(?<year>\d\d\d\d)$");
    string strDay = m.Groups["day"].Value;
    string strMonth = m.Groups["month"].Value;
    string strYear = m.Groups["year"].Value;

Для строки "2010 12:44" вы можете использовать шаблон @"^(?<year>\d\d\d\d) (?<hour>\d\d?):(?<minute>\d\d?)$"

Для строки "12-2010" вы можете использовать шаблон @"^(?<month>\d\d?)-(?<year>\d\d\d\d)$"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...