【问题标题】:C# append test with StringBuilderC# 使用 StringBuilder 追加测试
【发布时间】:2018-07-05 11:18:38
【问题描述】:

我使用 StringBuilder 创建了一个长文本,但我只想要换行符 '\n'(Unix 模式)而不是 '\r\n',然后我会将整个文本写入文件中。

我试图在行之间插入'\n'字符并设置AppendFormat方法但没用。

也许我将这段长文本沿 '\n' 字符拆分,然后将这些行分别写到文件中。

    string rowStart = "\n*****" + from + "|" + to;
    StringBuilder sb = new StringBuilder();
    sb.Append(data[0]);

    for (int i = 1; i < data.Count; i++)
    {
        //sb.AppendFormat("\n{0}", rowStart + data[i]); not work
        sb.Append(rowStart + data[i]);
    }
    //var t = sb.Replace("\r\n","\n"); not work
    return sb.ToString();

【问题讨论】:

  • 你能告诉我们你的代码吗?
  • @SandoorHatvani 请向我们展示您的书面代码,以便我们为您提供帮助
  • 你试过Environment.NewLine吗?
  • 在将文本写入文件之前,将所有 '\r' 替换为 '' 应该可以。恕我直言
  • @SándorHatvani 您尝试过 Ananke 解决方案吗?是什么让您认为 Notepad++ 在打开文件时不会将 LF 替换为 CRFL?

标签: c# newline stringbuilder


【解决方案1】:

StringBuilder.AppendLine 只是执行以下操作:

public StringBuilder AppendLine(string value)
{
    this.Append(value);
    return this.Append(Environment.NewLine);
}

由于 Environment.NewLine 无法设置,您只能进行两次追加,或者编写自己的扩展方法,例如:

public static class StringBuilderExtensions
{
    public static void AppendUnixLine(this StringBuilder builder, string s)
    {
        builder.Append(s);
        builder.Append('\n');
    }
}

【讨论】:

  • 谢谢,但行尾还有 CRLF 字符。
  • 对不起,原来我必须使用的服务修改了线刹车标志。非常感谢大家。
猜你喜欢
  • 1970-01-01
  • 2013-07-03
  • 2010-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-02
  • 1970-01-01
  • 2019-03-06
相关资源
最近更新 更多