我需要一个c#中的正则表达式,它将在字符串文字中转义双引号。所以,如果我有这个字符串:“这个”怎么样,“那个”怎么样。我将能够在javascript中使用它而不会出错。因为我正在以js var。
的形式将这个文字写入页面编辑:我会尝试解释有关此问题的更多信息。 我正在写这样的信息:
string UserMsg = GetMessageText(999);
StringBuilder script = new StringBuilder();
script.AppendFormat("var UserMsg =\"{0}\";{1}", UserMsg, Environment.NewLine);
ScriptManager.RegisterClientScriptBlock(this, GetType(), "scriptparams", script.ToString(),true);
现在让我们说messege 999:“我们在您的详细信息中发现了”问题“。 这导致js错误。
答案 0 :(得分:8)
您不应该使用正则表达式将C#字符串转换为JavaScript友好/安全格式。相反,假设您使用的是.NET 4,则可以使用HttpUtility.JavaScriptStringEncode并且它会超载以处理单引号和双引号。
例如:
string UserMsg = GetMessageText(999);
StringBuilder script = new StringBuilder();
script.AppendFormat("var UserMsg =\"{0}\";{1}", HttpUtility.JavaScriptStringEncode(UserMsg), Environment.NewLine);
ScriptManager.RegisterClientScriptBlock(this, GetType(), "scriptparams", script.ToString(),true);
如果UserMsg
设置为“我们在您的详细信息中发现了”问题“,则输出以下内容”:
var UserMsg ="we found a \"problem\" in your details";
答案 1 :(得分:4)
假设我理解正确,为了逃避C#源代码中的"
,您可以这样做:
"\""
或
@""""
这些文字中的任何一个都定义了一个包含单个双引号字符的字符串。
另一方面,您可能需要知道如何在Javascript中转义引号字符。这是通过\"
完成的。您可以使用String.Replace()
来实现这一点,但使用正确的HTML / JS发射器库会更好。
答案 2 :(得分:1)
请参阅Web Protection Library(也称为AntiXSS)。这有一个JavascriptEncode方法来执行此操作和其他转义。
答案 3 :(得分:0)
以下是我的建议:
var regex = new Regex("\"");
var result = regex.Replace(stringToReplace, "\\\"");
答案 4 :(得分:0)
我相信这样的事情可能有用:
Regex.Replace(myString,'"',"");
答案 5 :(得分:0)
我认为您的问题已经得到了回答,但是如果您仍然需要完整的代码。 下面的javascript将适合你。 var s =“这是\”嗨\“”; 警报(一个或多个);
普利文