【问题标题】:New line character in text file (C#)文本文件中的换行符 (C#)
【发布时间】:2016-01-29 15:17:47
【问题描述】:

我正在使用System.IO.File.AppendAllText 将文本导出到C# 中的文件,并传入文本文件,然后将我要使用\n 导出的文本添加到末尾。当我查看文本文档时,它们不在不同的行上,尽管那个讨厌的回车字符在行之间。因此系统可能认为它是两条线,但用户将其视为一条。每次生成文件时,如何在不执行查找替换的情况下自动修复此问题?

System.IO.File.AppendAllText(@"./WarningsLog.txt", line + "\n");

【问题讨论】:

  • 您如何创建要附加到文件的文本?您是使用StringBuilderAppendLine() 还是只是连接一个字符串?
  • 在没有看到这段代码的情况下猜测你的代码有什么问题并不是很有效。
  • 尝试添加\r\n 而不是\n

标签: c# .net text io carriage-return


【解决方案1】:

您需要使用Environment.NewLine 而不是\n,因为换行符可以不止这些。在windows中(如果我没记错的话),默认其实是\r\n

虽然使用\r\n 会暂时帮助您,但使用Environment.NewLine 是正确的方法

【讨论】:

    【解决方案2】:

    首先,有a couple of ways 代表新行。 最常用的是:

    • unix 方式 - 写入\n 字符。 \n 这里代表 n换行符。
    • windows 方式 - 编写\r\n 字符。 \r 这里是马车 return 字符。

    如果您正在编写独立于平台的内容,Environment.NewLine 将为您完成这项工作并选择正确的字符。

    MSDN 声明它代表:

    对于非 Unix 平台,一个包含“\r\n”的字符串,对于 Unix 平台,一个包含“\n”的字符串。

    此外,在某些情况下,您可能希望使用System.IO.File.AppendAllLines,它将IEnumerable<string> 作为行集合并将其附加到文件中。它在内部使用Environment.NewLine

    【讨论】:

      【解决方案3】:

      您可以尝试使用一些特定于文件的字符检查来构建它,例如 新行、制表符等.... 这是一个检查新行和标签的示例代码:

       public static string Replace()
              {  
                   string rLower =   words.ToLower().Replace(Environment.NewLine, "<replaced_newLine>");
                  rLower = rLower.Replace("\t", "<replaced_Tabulation>");
                  return rLower;
              }
      

      当然,你可能有很多不同的组合,其中需要更改的项目后跟“”或“\n”或“\r\n”或“\t”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-22
        • 1970-01-01
        • 2012-11-05
        • 2021-06-07
        相关资源
        最近更新 更多