【发布时间】:2011-04-28 12:24:42
【问题描述】:
在 C# 中,\n 和 \r\n 有什么区别?
【问题讨论】:
-
这与 C# 无关,因为它几乎适用于所有语言。
标签: c# newline linefeed carriage-return
在 C# 中,\n 和 \r\n 有什么区别?
【问题讨论】:
标签: c# newline linefeed carriage-return
"\n" 只是一个换行符 (Unicode U+000A)。这通常是 Unix 行分隔符。
"\r\n" 是回车符 (Unicode U+000D) 后跟换行符 (Unicode U+000A)。这通常是 Windows 行分隔符。
【讨论】:
\n 视为一个完整的换行符,但它可能并非在所有版本中都存在 - 如果您在记事本中将相同的数据作为文件查看,您不会 查看换行符。
基本上归结为 Windows 标准:\r\n 和基于 Unix 的系统使用:\n
【讨论】:
区别
有几个字符可以表示换行。通常是这两个:
* '\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
【讨论】:
\r——他们现在使用\n。而\r\n 恰好被几乎所有存在的应用层互联网协议所使用,这些协议曾经在线路方面起作用。
这是关于操作系统如何识别行尾的。
士气:如果您正在为 Windows 开发,请坚持 \r\n。或者更好的是,使用 C# 字符串函数来处理已经考虑行尾的字符串(WriteLine 等)。
【讨论】:
\n 是 Unix(-like) 系统使用的换行符,\r\n 是 windows 使用的。这与 C# 无关。
【讨论】:
\n 是 Unix,\r 是 Mac,\r\n 是 Windows。
有时它会带来麻烦,尤其是在跨平台运行代码时。您可以使用Environment.NewLine 绕过此问题。
更多信息请参考What is the difference between \r, \n and \r\n ?!。阅读愉快
【讨论】:
它们只是\r\n and \n 是变体。
\r\n在windows中使用
\n在mac和linux中使用
【讨论】:
\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。 现在您无需关心操作系统。
【讨论】: