TryParseExact - Поиск даты в середине строки текста
Доброе утро и счастливый конец света всем вам, у меня есть проблема, связанная с датой, которая не связана с апокалипсисом
Я пытаюсь найти дату в текстовом документе. Строка с датой на ней имеет текст спереди и сзади, однако когда я использую TryParseExact, мне кажется, что я могу найти только дату, если она находится в начале строки текста.
Как бы я изменил приведенный ниже код для поиска даты, которая находится в пределах 20 символов в строке текста?
DateTime d = DateTime.Now;
var format1 = "dd/MM/yyyy";
var fileDates1 = System.IO.File.ReadAllLines(z)
.Where(l => l.Length >= format1.Length
&& DateTime.TryParseExact(l.Substring(0, format1.Length)
2 ответа
Ваш код действительно проверяется только в начале строки.
Вы можете объединить регулярное выражение, чтобы найти вещи, которые похожи на даты, и затем правильно проанализировать, чтобы проверить, что "дата" действительна:
DateTime d;
var format1 = "dd/MM/yyyy";
Regex r = new Regex("[0-3][0-9]/[0-1][0-9]/[0-9]{4}");
var linesWithDates = System.IO.File.ReadAllLines(z)
.Where(l => r.Matches(l).Cast<Match>()
.Any(DateTime.TryParseExact(m.Value, format1, ...)));
Вы можете использовать регулярное выражение, чтобы найти вашу дату в тексте;
String text = File.ReadAllLines(z);
String pattern = @"\d{2}/\d{2}/\d{4}";
String dateString = Regex.Match(text, pattern).Value;