如何向我的 StringBuilder 添加一个空行?
How can I add a blank line to my StringBuilder?
众所周知 "issue" 这样做:
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)" 没有附加任何内容。
我必须怎么做才能在各个列表项输出之间强制划线?
StringBuilder.AppendLine 确实在字符串末尾添加了 \r\n。您不需要显式添加其他语句,例如 StringBuilder.AppendLine(System.Environment.NewLine)。您可以通过将字符串 returned 从 StringBuilder 转换为字符数组来交叉检查这一点,您可以在其中看到换行符。
在您的示例中,您似乎正试图在 HTML 中显示输出(查看字符串中的 p 标记)并且换行符在 HTML 中不可见。为了实现这一点,您可能需要在字符串中添加一个 br。
sb.AppendLine("<br/>");
马车 return (\r\n) 在 HTML 标签中没有意义。
添加到这个问题,尽管它很老,因为它是 google 的第一个结果。)
显示白色的其他选项space:
将 <p></p>
标签包裹在 <pre> </pre>
标签中,例如:
sb.Append("<pre><p>").Append(aStringVariable).AppendLine("</p></pre>");
将 css class 分配给该元素:
<p class="preserveWhiteSpace">
.preserveWhiteSpace{
white-space: pre;
}
或者,如果您希望在不溢出对象容器的情况下换行和换行:
.preserveWhiteSpace{
white-space: pre-wrap;
}
如果您正在为电子邮件格式化 html 而电子邮件客户端不正常:
sb.AppendLine("<p style="background-color: white; color: white;">.</p>")
这是最 hackiest 的选项,但是电子邮件客户端中的 html 支持倾向于使用非常古老的 html/css 标准...
众所周知 "issue" 这样做:
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)" 没有附加任何内容。
我必须怎么做才能在各个列表项输出之间强制划线?
StringBuilder.AppendLine 确实在字符串末尾添加了 \r\n。您不需要显式添加其他语句,例如 StringBuilder.AppendLine(System.Environment.NewLine)。您可以通过将字符串 returned 从 StringBuilder 转换为字符数组来交叉检查这一点,您可以在其中看到换行符。
在您的示例中,您似乎正试图在 HTML 中显示输出(查看字符串中的 p 标记)并且换行符在 HTML 中不可见。为了实现这一点,您可能需要在字符串中添加一个 br。
sb.AppendLine("<br/>");
马车 return (\r\n) 在 HTML 标签中没有意义。
添加到这个问题,尽管它很老,因为它是 google 的第一个结果。)
显示白色的其他选项space:
将
<p></p>
标签包裹在<pre> </pre>
标签中,例如:sb.Append("<pre><p>").Append(aStringVariable).AppendLine("</p></pre>");
将 css class 分配给该元素:
<p class="preserveWhiteSpace">
.preserveWhiteSpace{ white-space: pre; }
或者,如果您希望在不溢出对象容器的情况下换行和换行:
.preserveWhiteSpace{ white-space: pre-wrap; }
如果您正在为电子邮件格式化 html 而电子邮件客户端不正常:
sb.AppendLine("<p style="background-color: white; color: white;">.</p>")
这是最 hackiest 的选项,但是电子邮件客户端中的 html 支持倾向于使用非常古老的 html/css 标准...