【问题标题】:How can I add a blank line to my StringBuilder?如何在我的 StringBuilder 中添加一个空行?
【发布时间】:2015-04-09 18:10:51
【问题描述】:

这样做是一个已知的“问题”:

sb.AppendLine();

...不会像预期的那样添加空行(例如,讨论过的here)。

然而,人们普遍认为这会奏效:

sb.AppendLine(Environment.NewLine);

...但这对我不起作用。我有这个代码:

for (int i = 0; i < listOfListItems.Count; i++)
{
    sb.AppendLine(Environment.NewLine);
    lc = listOfListItems[i];
    sb.AppendLine(String.Format(@"<p>Request date is {0}; Payee Name is {1}; Remit Address or Mail Stop is {2}; Last 4 of SSN or ITIN is {3}; 204 Submitted or on file is {4}; Requester Name is {5}; Dept or Div Name is {6}; Phone is {7}; Email is {8}</p>",
        lc.li_requestDate, lc.li_payeeName, lc.li_remitAddressOrMailStop, lc.li_last4SSNDigitsOrITIN, lc.li_204SubmittedOrOnFile, lc.li_requesterName, lc.li_deptDivName, lc.li_phone, lc.li_email));
}

所有数据都被添加到 StringBuilder,然后被添加到生成的表单中,但列表项之间没有空格 - “sb.AppendLine(Environment.NewLine)”没有附加任何内容。

我必须怎么做才能在各个列表项输出之间强制划线?

【问题讨论】:

  • 根据您引用的帖子,sb.Append(Environment.NewLine) 是诀窍(Append,而不是 AppendLine)
  • @AdamPlocher StringBuilder.AppendLine 只需调用 Append(Environment.NewLine)。真的,我认为这里还有其他问题 - AppendLine 一直对我有用。
  • @Lucas 是的,我看到了here。只是指出他的问题是在那种情况下引用 AppendLine 而不是 Append 。我也从来没有遇到过 AppendLine() 的问题,但它确实似乎是有时存在的问题......
  • @Adam 我不认为有问题,Praveen 可能猜到了 OP 出了什么问题:HTML 空白折叠。

标签: c# stringbuilder splistitem


【解决方案1】:

StringBuilder.AppendLine 确实在字符串的末尾添加了一个 \r\n。您不需要显式添加另一个语句,例如 StringBuilder.AppendLine(System.Environment.NewLine)。您可以通过将从 StringBuilder 返回的字符串转换为字符数组来交叉检查这一点,您可以在其中看到换行符。

在您的示例中,您似乎正在尝试以 HTML 格式显示输出(查看字符串中的 p 标签),而换行符在您的 HTML 中不可见。为了实现这一点,您可能需要在字符串中添加一个 br。

sb.AppendLine("<br/>");

回车 (\r\n) 在 HTML 标记中没有任何意义。

【讨论】:

    【解决方案2】:

    添加到这个问题,因为它是谷歌的第一个结果。)

    显示空白的其他选项:

    1. &lt;p&gt;&lt;/p&gt; 标签包装在&lt;pre&gt; &lt;/pre&gt; 标签中,例如:

      sb.Append("<pre><p>").Append(aStringVariable).AppendLine("</p></pre>");
      
    2. 为该元素分配一个 css 类:

      <p class="preserveWhiteSpace">
      
      .preserveWhiteSpace{
      white-space: pre;
      }
      

      或者,如果你想要换行和换行而不溢出对象的容器:

      .preserveWhiteSpace{
      white-space: pre-wrap;
      }
      
    3. 如果您正在为电子邮件格式化 html 并且电子邮件客户端没有运行:

      sb.AppendLine("<p style="background-color: white; color: white;">.</p>")
      

      这是最老套的选项,但电子邮件客户端中的 html 支持往往使用非常旧的 html/css 标准...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-02
      • 2015-02-09
      • 1970-01-01
      • 2018-09-22
      相关资源
      最近更新 更多