2012-12-21 41 views
-1

早上好,世界的快樂的結局給你所有的中東日期,我有個約會相關的問題是不相關的世界末日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) 
+0

是什麼模式?你如何知道日期在行中的位置?你也可以發佈包含日期, – Habib

+0

的樣本行日期來自我的一些報告,這裏是你請求的樣本行: BW 17/11/1981 bikerben

回答

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

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

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