首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨语言字符串转义

跨语言字符串转义
EN

Stack Overflow用户
提问于 2015-08-20 19:48:10
回答 1查看 2.8K关注 0票数 4

我在C#中有一个包含错误消息的字符串。这条消息可以包含单引号或双引号,也可以同时包含双引号,但我可以任意操作字符串(以及HTML/Javascript)。

例如,可以显示以下消息(内容并不重要,只是它们可以包含单引号或双引号):

  • The following error has occurred: "You dun goofed."
  • The specified path isn't valid.
  • The following error has occurred: "I'm a goof"

此字符串作为警报插入到onClick处理程序中。听起来很复杂,所以让我来展示一下我的意思:

<a onClick="alert('myContentGoesHere')">View Error</a>

我能够通过在'中用\'替换C#来显示单引号。但是,我试图类似地转义",导致了一些奇怪的反斜杠,这些反斜杠终止了onClick属性并导致无效的onClick。

到目前为止,我已经尝试将"替换为:

  • \"
  • \\"
  • &quot;
  • &#92;&quot;

没有骰子。我觉得我可能是从错误的角度来处理这个问题,所以如果你有一个超越字符串替换的解决方案,我会全神贯注。谢谢你能提供的任何帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-20 19:59:09

要使值在JavaScript中作为字符串文本工作,您需要转义字符串分隔符和反斜杠。然后,您需要对JavaScript进行编码,以便它在HTML属性中作为一个值工作。

示例:

代码语言:javascript
复制
string code =
  "<a onClick=\"" +
  HttpUtility.HtmlEncode(
    "alert('" +
    myContentGoesHere.Replace("'", "\\'").Replace("\\", "\\\\") +
    "');"
  ) +
  "\">View Error</a>";

如果字符串可以包含控制字符,则也需要替换它们。添加您需要的内容:

代码语言:javascript
复制
 .Replace("\r", "\\r")
 .Replace("\n", "\\n")
 .Replace("\b", "\\b")
 .Replace("\t", "\\t")
 .Replace("\v", "\\v")
 .Replace("\f", "\\f")
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32127066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档