【发布时间】:2026-02-07 19:50:01
【问题描述】:
我想知道是否有办法用“\n”替换所有 CRLF 实例。有没有办法做到这一点?
【问题讨论】:
-
您是否尝试过使用
String.Replace("\r\n", "\n")?
我想知道是否有办法用“\n”替换所有 CRLF 实例。有没有办法做到这一点?
【问题讨论】:
String.Replace("\r\n", "\n")?
我认为我似乎一直在尝试以错误的方向替换。
String.Replace('\n', '\r')
VS
String.Replace('\r', '\n')
现在好像一切正常。
【讨论】:
您尝试过哪些不起作用的方法? CRLF 表示carriage return、line feed。回车是\r,换行是\n,所以用换行替换CRLF是
value = value.Replace("\r\n", "\n");
这就像任何其他字符串替换一样。重要的是要注意Replace 是一个返回新字符串的方法,因此您需要将结果分配回某个变量,在大多数情况下,它可能与您已经使用的变量名称相同。
编辑:根据您在下面的评论,您可能会根据 Notepad++ 的行尾转换设置将 CRLF 误认为 LF。在hex editor 中打开您的文件,看看里面有什么。您将看到 CRLF 为0D 0A(所以回车是0D,换行是0A)。
Notepad++ 会告诉你你想看到什么。通过单击Edit > EOL Conversion > UNIX Format 检查您的行尾转换,即使存在 CRLF,它也会显示 LF 而不是 CRLF。
【讨论】:
如果你真的想用显式字符串“\n”替换回车/换行对,你需要转义反斜杠:
value = value.Replace("\r\n", "\\n");
【讨论】:
ReadLine 和WriteLine 访问该文件?由于他们处理行分隔符,你可能会绊倒自己。
ReadLine 读取文件的应用程序,ReadLine 通过检测要删除的控制字符来找到行尾。很有帮助,它不会将这些字符返回到您的应用程序。应用程序尝试修复线路并使用WriteLine 输出结果。为了指示行尾,WriteLine 有助于在您提供的数据的末尾添加一个或两个控制字符。瞧。