【问题标题】: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# 无关,因为它几乎适用于所有语言。

标签: c# newline linefeed carriage-return


【解决方案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。 现在您无需关心操作系统。

          【讨论】:

            猜你喜欢
            • 2011-04-18
            • 1970-01-01
            • 2013-03-04
            • 1970-01-01
            • 2010-11-19
            • 2011-04-30
            • 1970-01-01
            • 2016-04-15
            • 1970-01-01
            相关资源
            最近更新 更多