在 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#中long与int64有啥区别吗

在 C# 中,大写和小写字符串/字符串有啥区别? [复制]

在 C# 中,类中的析构函数和 Finalize 方法有啥区别?

C#中String和string有啥区别?

在 C# 中,public、private、protected 和没有访问修饰符有啥区别?

C#中访问说明符保护和内部保护有啥区别