0

最大 +500MB の大きなテキスト ファイルがあります)、特定の文字列に出現する日付をすべて置き換える必要があります。日付を一致させるために正規表現を使用していますが、うまく機能します。行番号、一致、および一致が発生する行全体をキャプチャする必要があります。その部分は機能していますが、苦労しているのは交換部分です。理想的には、一致を確認し、追加情報を取得して、ファイルを 1 回移動するだけで置換を実行したいと考えています。これを効率的に行うにはどうすればよいですか?これは、正規表現を実行するために使用しているものです。

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);
        }
    }
}
4

1 に答える 1

1

おそらく、変更された行ごとに 2 番目の一時ファイル行を作成し、古いファイルを削除して、完了時に新しいファイルの名前を変更すると思います。

于 2013-03-26T14:23:30.303 に答える