2013-03-26 70 views
0

我有一個大的文本文件可以達到+ 500MB),我需要替換所有發生在特定字符串中的日期的所有事件。我使用正則表達式來匹配日期,並且效果很好。我需要捕捉線路號碼,匹配以及匹配發生的整個線路。我有那部分工作,這是我正在努力的替換部分。理想情況下,我想進行比賽,捕獲額外的信息並在文件中進行一次更換。我怎樣纔能有效地做到這一點?這是我用來執行正則表達式的。C#正則表達式匹配/替換大文本文件

while ((line = InputFile.ReadLine()) != null) 
{ 
    // Increment for each line read 
    x++; 

    // Try to match each line against the Regex. 
    Match m = reg.Match(line);      
    if (m.Success) 
    { 
     DateTime result; 
     if (!(DateTime.TryParse(m.Groups[0].Value, out result))) 
     { 
      // add it to the DT 
      MatchTable.Rows.Add(x, m.Groups[0].Value, line); 
     } 
     else if (DateTime.Parse(m.Groups[0].Value).Year <= 1753) // 1753 is the earliest date that can be stored in SQL datetime 
     { 
      // add it to the DT      
      MatchTable.Rows.Add(x, m.Groups[0].Value, line); 
     } 
    } 
} 
+0

它可以通過異步讀/寫完成嗎? (不是我知道該怎麼做,只是想知道) – mack 2013-03-26 14:48:53

回答

1

我想我可能會通過修改後的行創建第二個臨時文件行,然後刪除舊文件並在完成時重命名新文件。