替换文本文件中的换行符

时间:2016-02-15 01:04:20

标签: c#

我有一个文本文件,其中每行以 CRLF 结尾,这很好,但文件在行内容中有一些 LF 的行。

我试图替换行内容中的 LF ,如下所示:

var fileContent = File.ReadAllText(fileName);
fileContent = Regex.Replace(fileContent, @"(?<!\r)\n", " ");
File.WriteAllText(fileName, fileContent);

这很好用。但是当我试图处理大文件(超过150mb)时,抛出内存异常。

尝试

List<string> text = File.ReadAllLines(filePath).ToList(); 读取行并按行替换。但这不起作用,因为它像 LF

那样分裂

如何通过 CRLF

强制分割线条

1 个答案:

答案 0 :(得分:0)

您可以使用返回File.ReadLinesIEnumerable,这意味着在需要时使用yield功能一次提取一行。 /> 成功写入 anotherFilename 后,我们会删除 fileName 并将 anotherFilename 移至其位置。

foreach (var line in File.ReadLines(fileName))
{
    File.WriteAllText(anotherFilename, line + Environment.NewLine);
}
File.Delete(fileName);
File.Move(anotherFilename, filename);

注意:尚未经过测试。