是否可以查看文件的下一行是什么或写入文件的上一行?
我正在阅读大约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
,我需要写入它之前的行。有什么想法吗?
答案 0 :(得分: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);
}
答案 1 :(得分: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();
}