如何将 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# 变量追加到字符串

这些天我建议您使用内插字符串(这从 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格式良好。