跨语言字符串转义
本文关键字:转义 字符串 语言 | 更新日期: 2023-09-27 18:09:03
我有一个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"
这个字符串被插入到HTML中,作为onClick处理程序中的警告。听起来很复杂,我来解释一下:
<a onClick="alert('myContentGoesHere')">View Error</a>
我能够通过用c#中的''
替换'
来显示单引号。但是,我尝试类似地转义"
导致了奇数反斜杠,它终止了onClick属性并导致无效的HTML。
到目前为止,我已经尝试将"
替换为:
-
'"
-
''"
-
"
-
\"
不行。我觉得我可能从错误的角度来处理这个问题,所以如果你有一个解决方案,超越字符串替换,我洗耳恭听。谢谢你提供的任何帮助。
要使值在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")