TryParseExact - 在一行文本中间查找日期

时间:2012-12-21 10:03:46

标签: c# date tryparse

对你们所有人来说,早上好,世界末日快乐,我有一个与非世界末日相关的日期相关问题

我正在尝试在文本文档中找到日期。带有日期的行在其前面和后面有文本,但是当我使用 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 个答案:

答案 0 :(得分:1)

您可以使用regular expression在文字中查找日期;

String text = File.ReadAllLines(z);
String pattern = @"\d{2}/\d{2}/\d{4}";
String dateString = Regex.Match(text, pattern).Value;

答案 1 :(得分:0)

您的代码确实只在行的开头进行检查。

您可以组合正则表达式来查找看起来的内容,例如日期,然后正确解析以检查“日期”是否有效:

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, ...)));