如何向我的StringBuilder添加空白行?

问题描述 投票:-1回答:2

这是已知的“问题”:

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)”不添加任何内容。

我该怎么做才能在各个列表项输出之间加一条线?

c# sharepoint-2010 stringbuilder splistitem
2个回答
5
投票

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

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

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

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


0
投票

尽管这个问题已经存在,但仍是该问题的补充,因为它是google的第一个结果。)]] >>

显示空白的其他选项:

  1. <p></p>标签包裹在<pre> </pre>标签中,例如:

    sb.Append("<pre><p>").Append(sb.ToString()).AppendLine("</pre></p>");

  2. 将CSS类分配给该元素:

  3. <p class="preserveWhiteSpace">

    .preserveWhiteSpace{ white-space: pre; }

或者,如果您希望换行并包装而不溢出对象的容器:

.preserveWhiteSpace{ white-space: pre-wrap; }

  1. 如果您正在格式化电子邮件的html格式,而电子邮件客户端则无法运行:

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

  2. 这是最骇人听闻的选择,但是电子邮件客户端中的html支持倾向于使用真正古老的html / css标准...

© www.soinside.com 2019 - 2024. All rights reserved.