gpt4 book ai didi

javascript - 跨语言字符串转义

转载 作者:行者123 更新时间:2023-12-02 15:47:02 24 4
gpt4 key购买 nike

我有一个 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 处理程序内的警报插入到 HTML 中。这听起来很复杂,所以让我来说明一下我的意思:

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

我可以通过替换 ' 来显示单引号与 \'在 C# 中。然而,我尝试同样逃脱"导致出现奇数个反斜杠,从而终止 onClick 属性并导致无效的 HTML。

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

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

没有骰子。我觉得我可能从错误的 Angular 来处理这个问题,所以如果你有一个超越字符串替换的解决方案,我会洗耳恭听。感谢您提供的任何帮助。

最佳答案

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

示例:

string code =
"<a onClick=\"" +
HttpUtility.HtmlEncode(
"alert('" +
myContentGoesHere.Replace("'", "\\'").Replace("\\", "\\\\") +
"');"
) +
"\">View Error</a>";

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

 .Replace("\r", "\\r")
.Replace("\n", "\\n")
.Replace("\b", "\\b")
.Replace("\t", "\\t")
.Replace("\v", "\\v")
.Replace("\f", "\\f")

关于javascript - 跨语言字符串转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32127066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com