You can use an XML writer instead which is more cleaner:
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();
}
That's XmlWriter will write XML text to your StringBuilder.
Another approach would be using 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 is like String.Format:
For me, the main benefit of using XML writer is you avoid human errors and your (X)HTML will be well-formed with no doubt.