在C#中的字符串文字内转义双引号

时间:2011-11-28 09:18:21

标签: c# javascript regex

我需要一个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错误。

6 个答案:

答案 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 =“这是\”嗨\“”; 警报(一个或多个);

普利文

相关问题