【问题标题】:How to replace a newline in a large text file in C#如何在 C# 中替换大文本文件中的换行符
【发布时间】:2014-01-01 13:14:06
【问题描述】:

如何替换大文本 (*.csv) 文件 (~ 2 GB) 中的一些 换行符?

我无法使用 File.ReadAllText 读取整个文件,因为出现 OutOfMemory 错误,并且我无法使用 StreamReader,因为它会删除所有 NewLine 字符。

这里有一些示例文本:

Row1Field1;Row1Field2;Row1Field3(NewLine)
Row2Field1;Row2Fie(NewLine)  *<--- This newline is by mistake and I want to replace it!*
ld2;Row2Field3(NewLine)
Row3Field1;Row3Field2;Row3Field3(NewLine)

【问题讨论】:

  • 不清楚如何区分有效换行符和无效换行符。
  • @Tim:列分隔符(分号)太少,应该猜一下。

标签: c# text replace newline


【解决方案1】:

您应该使用 StreamReader(即使您说不能)并逐行读取文件。当你发现一个错误的新行时,只需将该行保存在内存中并与下一行连接(如果一次发生不止一个错误行,可能会更多)并写回输出流。 ReadLine 是否删除行尾无关紧要。只需使用 WriteLine 在输出流中写入,您就会再次获得换行符。

【讨论】:

  • 对...StreamReader 不会删除换行符。也许ReadLine() 方法可以,但这仅在需要保留换行符的确切编码时才重要。
  • @BenVoigt 即使删除换行符也可以(读取行确实删除换行符)只需要在输出流中使用 WriteLine
猜你喜欢
  • 2015-09-22
  • 1970-01-01
  • 2010-10-19
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
  • 2014-11-07
  • 1970-01-01
相关资源
最近更新 更多