2016-01-20 8 views
0

Форум.Извлечение значения даты из строки

Мой код считывает из файла первенствовать и получает следующую строку в переменной «textContainingDate»:

"Employee Filter: All Employees; Time Entry Dates: 01/07/2016-01/07/2016; Exceptions: All Exceptions" 

То, что я хотел бы сделать, это извлечь значение даты из строки. Хотя в качестве диапазона дат есть две даты, две даты всегда будут одинаковыми. Моя мысль, независимо от сценария, я буду удовлетворен первой встречей, с которой я сталкиваюсь.

var dateTime = DateTime.ParseExact(textContainingDate, "MM/dd/yyyy", CultureInfo.CurrentCulture); 

Я попытался использовать приведенный выше оператор, который я собрал вместе с другими вопросами stackoverflow и статьями Googled. Из того, что я прочитал, я считаю, что он терпит неудачу, потому что он ожидает только строки даты.

Любое консультирование по решению и/или направлению к тому, какой текст читать, чтобы найти решение, оценено.

+0

Используйте регулярное выражение, чтобы получить дату строки, а затем использовать метод преобразования его в 'DateTime'. –

+0

Является ли текст, предшествующий датам, всегда одинаковым? Если это так, вы можете использовать простую подстроку для сокращения даты –

+0

'DateTime.ParseExact()' метод точно анализирует строку типа '01/20/2012' в объект даты. Вы пытаетесь преобразовать всю строку, которая содержит значение даты, в объект даты, который невозможен. Извлеките строку даты с использованием регулярного выражения и проанализируйте ее в объект даты. –

ответ

3

Вы можете использовать Regex.Match, чтобы получить первую строку даты, которую вы встречаете. Этот метод возвращает первую подстроку, которая соответствует шаблону регулярного выражения во входной строке.

string stringWithDate = "Employee Filter: All Employees; Time Entry Dates: 01/07/2016-01/07/2016; Exceptions: All Exceptions"; 
Match match = Regex.Match(stringWithDate, @"\d{2}\/\d{2}\/\d{4}"); 
string date = match.Value; 
if (!string.IsNullOrEmpty(date)) { 
    var dateTime = DateTime.ParseExact(date, "MM/dd/yyyy", CultureInfo.CurrentCulture); 
    Console.WriteLine(dateTime.ToString()); 
} 

Что регулярное выражение \d{2}\/\d{2}\/\d{4} делает:
enter image description here

Смежные вопросы