反斜杠用于在分配字符串后转义引号重新生成
Backslash using for escaping qute regenerate after asigning String
在我的实体的 ToString
方法中,我尝试生成一个包含引号的信息字符串。所以我在引用前使用反斜杠,一切都很好,直到我尝试将 return 值分配给字符串变量,然后所有反斜杠卷土重来。这是 ToString 函数:
public override string ToString()
{
string content = "{";
content += "\"serviceType\":" + ServiceType.Name + ",";
content += "\"Debt\":" + amount;
content += "}";
return content;
}
之后我尝试使用 StringWriter
和 HtmlTextWriter
生成一个 HTML 但是在将 return 值分配给字符串变量之后有很多 \
、\r
、\n
、\t
在variable.here中的函数是:
public string ToHtmlString()
{
StringWriter stringWriter = new StringWriter();
using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter))
{
writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%");
writer.AddStyleAttribute(HtmlTextWriterStyle.BorderStyle, "1px solid black");
writer.AddStyleAttribute(HtmlTextWriterStyle.Direction, "rtl");
writer.RenderBeginTag(HtmlTextWriterTag.Table);// Begin Table
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("زیر خدمت");
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write(ServiceType.Name);
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("مبلغ");
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write(amount);
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderEndTag();// End Table
}
return stringWriter.ToString();
}
并在将值赋给变量后:
<table style=\"width:100%;border-style:1px solid black;direction:rtl;\">\r\n\t<tr>\r\n\t\t<td>زیر خدمت</td><td>درمان</td>\r\n\t</tr><tr>\r\n\t\t<td>مبلغ</td><td>6000</td>\r\n\t</tr>\r\n</table>
这里发生了什么?
该结果似乎可以在 C# 中的 webBrowser 控件中使用。如果您希望避免这些换行符和制表符(对于真正的浏览器),您可以尝试像这样替换几行代码。
旧代码:
using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter))
{
新代码:
using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter, string.Empty))
{
writer.NewLine = string.Empty;
HtmlTextWriter 中的第二个参数是用作制表符的字符串。
所以你得到的结果是这样的:
<table style=\"width:100%;border-style:1px solid black;direction:rtl;\"><tr><td>زیر خدمت</td><td>درمان</td></tr><tr><td>مبلغ</td><td>6000</td></tr></table>
编辑:为了避免 \",您可以使用 <? php echo
或 <%=
(对于 asp),或者更好地将结果修改为:
return stringWriter.ToString().Replace("\"", "'");
在我的实体的 ToString
方法中,我尝试生成一个包含引号的信息字符串。所以我在引用前使用反斜杠,一切都很好,直到我尝试将 return 值分配给字符串变量,然后所有反斜杠卷土重来。这是 ToString 函数:
public override string ToString()
{
string content = "{";
content += "\"serviceType\":" + ServiceType.Name + ",";
content += "\"Debt\":" + amount;
content += "}";
return content;
}
之后我尝试使用 StringWriter
和 HtmlTextWriter
生成一个 HTML 但是在将 return 值分配给字符串变量之后有很多 \
、\r
、\n
、\t
在variable.here中的函数是:
public string ToHtmlString()
{
StringWriter stringWriter = new StringWriter();
using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter))
{
writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%");
writer.AddStyleAttribute(HtmlTextWriterStyle.BorderStyle, "1px solid black");
writer.AddStyleAttribute(HtmlTextWriterStyle.Direction, "rtl");
writer.RenderBeginTag(HtmlTextWriterTag.Table);// Begin Table
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("زیر خدمت");
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write(ServiceType.Name);
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Tr);
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write("مبلغ");
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Td);
writer.Write(amount);
writer.RenderEndTag();
writer.RenderEndTag();
writer.RenderEndTag();// End Table
}
return stringWriter.ToString();
}
并在将值赋给变量后:
<table style=\"width:100%;border-style:1px solid black;direction:rtl;\">\r\n\t<tr>\r\n\t\t<td>زیر خدمت</td><td>درمان</td>\r\n\t</tr><tr>\r\n\t\t<td>مبلغ</td><td>6000</td>\r\n\t</tr>\r\n</table>
这里发生了什么?
该结果似乎可以在 C# 中的 webBrowser 控件中使用。如果您希望避免这些换行符和制表符(对于真正的浏览器),您可以尝试像这样替换几行代码。
旧代码:
using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter))
{
新代码:
using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter, string.Empty))
{
writer.NewLine = string.Empty;
HtmlTextWriter 中的第二个参数是用作制表符的字符串。 所以你得到的结果是这样的:
<table style=\"width:100%;border-style:1px solid black;direction:rtl;\"><tr><td>زیر خدمت</td><td>درمان</td></tr><tr><td>مبلغ</td><td>6000</td></tr></table>
编辑:为了避免 \",您可以使用 <? php echo
或 <%=
(对于 asp),或者更好地将结果修改为:
return stringWriter.ToString().Replace("\"", "'");