0

是否可以查看文件的下一行是什么或写入文件的上一行?

我正在阅读一个大约 13,000 行的文件,如果一行与我的正则表达式之一匹配,我会更改该行,如果不匹配,则保持不变。这些行被写入一个新文件。大概是这样的,当然。

//create Streamreader sr
//create Streamwriter sw
//loop through file by line
//if line matches REGEX, change it. Else, don't change it
//write line to new file
//if end of file, close sr and sw

我需要查看下一个,ENDREC以便我可以在它之前写一个新行

或者,如果当前行是ENDREC我需要写入它之前的行。有任何想法吗?

4

2 回答 2

2

如果将整个文件加载到内存中没有问题,请尝试以下操作:

public void Test()
{
    string fileName = "oldFileName";
    string newFileName = "newFileName";
    string[] allLines = File.ReadAllLines(fileName);
    string changedLine = "Changed";
    var changedLines = allLines.Select(p => ((Regex.IsMatch(p, "test")) ? changedLine : p));
    File.WriteAllLines(newFileName, changedLines);
}
于 2013-12-16T22:39:21.793 回答
0

这样的事情怎么样?

        var regex = new Regex(@"[a-zA-Z0-9_]+", RegexOptions.Compiled);

        using (var reader = File.OpenText("in.txt"))
        using (var writer = File.CreateText("out.txt"))
        {
            while (!reader.EndOfStream)
            {
                var line = reader.ReadLine();
                var match = regex.Match(line);

                if (match.Success)
                {
                    // Alter the line however you wish here.
                }

                writer.WriteLine(line);
            }
            writer.Flush();
        }
于 2013-12-16T22:25:47.900 回答