很抱歉我要问这个问题,但是由于某些原因我一直没能让它正常工作(是的,现在已经很晚了,这就是我的借口)。
假设我有这个字符串:
s = "John's book."
我想使用字符串对象的 replace
方法将它转换为这样:
s = "John\'s book."
我本以为这段代码可以给我想要的结果:
s = s.Replace("'", "\\'")
但是,这会导致:
"John\\'s book."
很抱歉我要问这个问题,但是由于某些原因我一直没能让它正常工作(是的,现在已经很晚了,这就是我的借口)。
假设我有这个字符串:
s = "John's book."
我想使用字符串对象的 replace
方法将它转换为这样:
s = "John\'s book."
我本以为这段代码可以给我想要的结果:
s = s.Replace("'", "\\'")
但是,这会导致:
"John\\'s book."
这样做可以让你不必再考虑它:
s = s.Replace("'", @"\'");
John\\'s book.
- Justin HelgersonConsole.Write()
,它应该输出正确的结果。 - lukiffers
上来查看结果... 是的,这样显示转义字符是正确的。但是,如果你在某个地方输出该字符串(如文本框或控制台),它将只显示一个反斜杠。 - BeemerGuys.Replace("'", @"\'");
和 s.Replace("'", "\\'");
都会得到相同的结果 -- 区别在于调试器本身;它将字符串值显示为 "John\\'s book."
,多了一个斜杠。但如果你在控制台或文件中输出这个字符串,你会看到真正的结果是 "John\'s book."
。 - BeemerGuy如果这涉及到 ASP.NET MVC (ASP.NET MVC 5 或更高版本),那么只是想展示另一种可能的解决方案:
var data= JSON.parse('@Html.Raw(HttpUtility.JavaScriptStringEncode(JsonConvert.SerializeObject(Model.memberObj)))');
HttpUtility.JavaScriptStringEncode
我有一个快速粗糙的函数,可以在使用MySQL插入语句之前转义文本。这可能会有所帮助:
public static string MySqlEscape(Object usString)
{
if (usString is DBNull)
{
return "";
}
else
{
string sample = Convert.ToString(usString);
return Regex.Replace(sample, @"[\r\n\x00\x1a\\'""]", @"\$0");
}
}
Server.HtmlEncode(varYourString);
只是让您知道,在这种情况下
string q = "John's book";
string s = s.Replace("'", "\\'");
string t = s.Replace("'", "\\\'");
s和t会显示相同的内容;