如何在StringBuilder中添加空行?

时间:2015-04-09 18:10:52

标签: c# sharepoint-2010 stringbuilder splistitem

这是一个众所周知的“问题”:

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)”没有任何附加内容。

我必须做些什么来强制单个列表项输出之间的一行?

2 个答案:

答案 0 :(得分:5)

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

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

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

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

答案 1 :(得分:2)

添加了这个问题的年龄,因为它是google的第一个结果。)

显示空白的其他选项:

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

    <pre> </pre>
  2. 为该元素分配一个CSS类:

    sb.Append("<pre><p>").Append(aStringVariable).AppendLine("</p></pre>");
    
    <p class="preserveWhiteSpace">
    

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

    .preserveWhiteSpace{
    white-space: pre;
    }
    
  3. 如果您正在格式化电子邮件的html格式,而电子邮件客户端则无法运行:

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

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