如何将 C# 变量追加到字符串
本文关键字:追加 字符串 变量 | 更新日期: 2023-09-27 17:55:39
这是我的代码:
string abc = "hello welcome!!";
StringBuilder sb = new StringBuilder();
sb.Append("<td style='padding-left:30px;width:100%'><span style='text-decoration:none;cursor:pointer' id='AnnMsg' target='_top' ><B><nobr>***"<%= i want to pass abc here %>"***</nobr></B></span></td>");
sb.Append("</tr></table>");
这些天我建议您使用内插字符串(这从 C# 6 开始可用):
string abc = "hello welcome!!";
StringBuilder sb = new StringBuilder();
sb.Append($"<td style='padding-left:30px;width:100%'><span style='text-decoration:none;cursor:pointer' id='AnnMsg' target='_top' ><B><nobr>***{abc}***</nobr></B></span></td>");
sb.Append("</tr></table>");
如果使用内插字符串,仍然可以使用 @ 符号(逐字标识符)来转义字符。您可以通过在 $ 前面或后面添加 @ 来执行此操作。
或者,您可以使用 + 运算符,如下所示:
string abc = "hello welcome!!";
StringBuilder sb = new StringBuilder();
sb.Append("<td style='padding-left:30px;width:100%'><span style='text-decoration:none;cursor:pointer' id='AnnMsg' target='_top' ><B><nobr>***" + abc + "***</nobr></B></span></td>");
sb.Append("</tr></table>");
或者你也可以使用字符串。格式:
string abc = "hello welcome!!";
StringBuilder sb = new StringBuilder();
sb.Append(string.Format("<td style='padding-left:30px;width:100%'><span style='text-decoration:none;cursor:pointer' id='AnnMsg' target='_top' ><B><nobr>***{0}***</nobr></B></span></td>", abc));
sb.Append("</tr></table>");
sb.Append("<td style='padding-left:30px;width:100%'><span style='text-decoration:none;cursor:pointer' id='AnnMsg' target='_top' ><B><nobr>***"+ abc +"***</nobr></B></span></td>");
sb.Append("</tr></table>");
使用 Append
方法:
string abc = "hello welcome!!";
StringBuilder sb =
new StringBuilder();
.Append("<td style='padding-left:30px;width:100%'><span style='text-decoration:none;cursor:pointer' id='AnnMsg' target='_top' ><B><nobr>***")
.Append(abc)
.Append("***</nobr></B></span></td>")
.Append("</tr></table>");
如果字符串可以包含任何需要编码的内容:
.Append(HttpUtility.HtmlEncode(abc))
如下:
sb.Append("<td style='padding-left:30px;width:100%'><span style='text-decoration:none;cursor:pointer' id='AnnMsg' target='_top' ><B><nobr>***"+ HttpUtility.HtmlEncode(abc) +"***</nobr></B></span></td>");
sb.Append("</tr></table>");
请注意对 HtmlEncode 的调用 - 如果您的字符串来自不受信任的来源,这一点非常重要。
您可以使用更干净的XML编写器:
StringBuilder builder = new StringBuilder();
using (XmlWriter writer = XmlWriter.Create(builder))
{
string abc = "hello welcome!!";
writer.WriteStartElement("td");
writer.WriteAttributeString("style", "padding-left:30px;width:100%");
{
writer.WriteStartElement("span");
writer.WriteAttributeString("id", "AnnMsg");
writer.WriteAttributeString("target", "_top");
writer.WriteAttributeString("style", "text-decoration:none;cursor:pointer");
{
writer.WriteStartElement("B");
{
writer.WriteStartElement("nobr");
{
writer.WriteString(abc); // Here's where your variable is rendered as text
}
writer.WriteEndElement();
}
writer.WriteEndElement();
}
writer.WriteEndElement();
}
writer.WriteEndElement();
}
也就是说,XmlWriter会将XML文本写入StringBuilder。
另一种方法是使用StringBuilder.AppendFormat:
string abc = "hello welcome!!";
StringBuilder sb = new StringBuilder();
sb.AppendFormat
(
"<td style='padding-left:30px;width:100%'><span style='text-decoration:none;cursor:pointer' id='AnnMsg' target='_top' ><B><nobr>{0}</nobr></B></span></td></tr></table>",
arg0: abc
);
StringBuilder.AppendFormat 类似于 String.Format:
- http://msdn.microsoft.com/en-us/library/system.text.stringbuilder.appendformat.aspx
对我来说,使用XML编写器的主要好处是避免了人为错误,并且毫无疑问,您的(X)HTML格式良好。