在 C# 中,\n 和 \r\n 有啥区别?
Posted
技术标签:
【中文标题】在 C# 中,\\n 和 \\r\\n 有啥区别?【英文标题】:In C#, what's the difference between \n and \r\n?在 C# 中,\n 和 \r\n 有什么区别? 【发布时间】:2011-04-28 12:24:42 【问题描述】:在 C# 中,\n
和 \r\n
有什么区别?
【问题讨论】:
这与 C# 无关,因为它几乎适用于所有语言。 【参考方案1】:"\n" 只是一个换行符 (Unicode U+000A)。这通常是 Unix 行分隔符。
"\r\n" 是回车符 (Unicode U+000D) 后跟换行符 (Unicode U+000A)。这通常是 Windows 行分隔符。
【讨论】:
Jon 但是如果它只是换行符,那么为什么图片中的文字看起来也有回车 i.stack.imgur.com/LKVCr.png ?如果它只是一个换行符,那么 bbb... 最多不应该在第二行的左边... @RoyiNamir:这完全取决于显示介质。所以看起来 Windows 控制台 shell 现在将\n
视为一个完整的换行符,但它可能并非在所有版本中都存在 - 如果您在记事本中将相同的数据作为文件查看,您不会 查看换行符。【参考方案2】:
基本上归结为 Windows 标准:\r\n 和基于 Unix 的系统使用:\n
http://en.wikipedia.org/wiki/Newline
【讨论】:
【参考方案3】:区别
有几个字符可以表示换行。通常是这两个:
* '\n' or '0x0A' (10 in decimal) -> This character is called "Line Feed" (LF).
* '\r' or '0x0D' (13 in decimal) -> This one is called "Carriage return" (CR).
不同的操作系统以不同的方式处理换行符。以下是最常见的简短列表:
* DOS and Windows
他们希望换行符是两个字符的组合,即 '\r\n'(或 13 后跟 10)。
* Unix (and hence Linux as well)
Unix 使用单个 '\n' 来表示新行。
* Mac
Mac 使用单个 '\r'
。
取自Here
【讨论】:
AFAIK,Mac 自 OSX 以来就没有使用过\r
——他们现在使用\n
。而\r\n
恰好被几乎所有存在的应用层互联网协议所使用,这些协议曾经在线路方面起作用。【参考方案4】:
这是关于操作系统如何识别行尾的。
Windows 用户\r\n Mac 用户\r Linux 使用\n士气:如果您正在为 Windows 开发,请坚持 \r\n。或者更好的是,使用 C# 字符串函数来处理已经考虑行尾的字符串(WriteLine 等)。
【讨论】:
【参考方案5】:\n 是 Unix(-like) 系统使用的换行符,\r\n 是 windows 使用的。这与 C# 无关。
【讨论】:
【参考方案6】:\n
是 Unix,\r
是 Mac,\r\n
是 Windows。
有时它会带来麻烦,尤其是在跨平台运行代码时。您可以使用Environment.NewLine
绕过此问题。
更多信息请参考What is the difference between \r, \n and \r\n ?!。阅读愉快
【讨论】:
因为现在 Windows 在这方面不像以前那么严格了,所以它也接受了 \n。 @TobySmith 我知道这篇文章已经过时了,但是您可以尝试编写一个带有“\n”作为换行符的文件,然后使用标准的 Windows 编辑器打开它。除非你做了 "\r\n",否则他不会换行 在 Windows 10 中,在记事本中添加了对所有类型的行尾的支持! blogs.msdn.microsoft.com/commandline/2018/05/08/…【参考方案7】:它们只是\r\n and \n
是变体。
\r\n
在windows中使用
\n
在mac和linux中使用
【讨论】:
【参考方案8】:\n = LF (Line Feed) // 在 Unix 上用作换行符
\r = CR (Carriage Return) // 在 Mac 上用作换行符
\r\n = CR + LF // 在 Windows 上用作换行符
(char)13 = \r = CR
Environment.NewLine = 以上任何基于操作系统的代码
// .NET 提供了 Environment 类,它提供了许多基于操作系统的数据,所以如果应用程序是在 Windows 上构建的,并且您使用 CR + LF ("\n\r" 而不是 Environment.NewLine) 作为字符串中的换行符,然后 Microsoft 创建一个 VM 用于在 Unix 中运行 .NET 应用程序,那么就会出现问题。 因此,当您需要换行符时,您应该始终使用 Environment.NewLine。 现在您无需关心操作系统。
【讨论】:
以上是关于在 C# 中,\n 和 \r\n 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
在 C# 中,类中的析构函数和 Finalize 方法有啥区别?