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

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

现在假设消息 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# - 在 C# 中转义字符串文字中的双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8293707/

相关文章:

php - 将单行注释转换为 block 注释

c# - 按下按钮时动态添加用户控件

c# - 以编程方式将表添加到 Microsoft SQL Server Compact 3.5 数据库

c# - 箭头键绑定(bind)不触发

javascript - VS2013 : Publish minified bundle created on files outside of the project

python - 如何在Python中使用正则表达式更改文件名?

c++ - 标记一个字符串,不包括引号内的定界符

c# - 数组的值无缘无故地改变了

javascript - 如何覆盖事件文本光标 (Safari)?

javascript - Require.js(+文本插件)拒绝加载任何外部文本!模板即使它们位于我自己的主机服务器中?