繁体   English   中英

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

[英]escape double quotes inside string literal in C#

我需要在C#中使用正则表达式,以将字符串文字内的双引号转义。 因此,如果我有此字符串:““ this”如何以及“ that”如何”。 我将能够在javascript中使用它而不会出现错误。 因为我将这个文字写为js var。

编辑:我将尝试解释有关该问题的更多信息。 我在这样的页面上写messege:

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); 

现在让我们说信息999是这样的:“我们在您的详细信息中发现了一个“问题”。 这导致js错误。

您不应该使用正则表达式将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";

假设我正确理解了您的要求,那么在C#源代码中转义一个" ,您可以这样做:

"\""

要么

@""""

这些文字中的任何一个都定义了一个包含单双引号字符的字符串。


另一方面,也许您需要知道如何在Javascript中转义引号字符。 这可以通过\\"完成。您可以使用String.Replace()来实现这一点,但是使用合适的HTML / JS发射器库会更好。

请参阅Web保护库 (也称为AntiXSS)。 那有一个JavascriptEncode方法来执行此操作和其他转义。

这是我对您的建议:

var regex = new Regex("\"");
var result = regex.Replace(stringToReplace, "\\\"");

我相信这样的事情可能会起作用:

Regex.Replace(myString,'"',""); 

我认为您的问题已经得到解答,但是如果您仍然需要完整的代码。 下面的一段javascript将为您工作。 var s =“这是\\” Hi \\“”; 警报;

普拉文

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM