【问题标题】:HTML String Inside Nested String嵌套字符串中的 HTML 字符串
【发布时间】:2011-02-11 15:16:30
【问题描述】:

我有一个很长很长的 html,需要包含在 Javascript 字符串中,而 Javascript 字符串又包含在 Java 字符串中,如下所示:

String html = "javascript:var html='...all goes here...';void(0);";

现在写在哪里...all going here...,所有的html包括"和'甚至其他特殊字符。我可以用Java的方式跳过它们吗?

【问题讨论】:

  • “skip”是指“escape”,如写作"...\"..."

标签: java javascript html string


【解决方案1】:

在这里,您可以享受多次解释字符串的乐趣。您的 " 引号需要为 java 转义,但您的 ' 引号需要为 javascript 转义。因此,您的 " 引号可以正常转义,但是当解释 javascript 时,您的 ' 引号需要将 \ 字符放在它们前面,所以你需要一个文字 \ 在你的 java 字符串(或 \,一个转义的 )。因此,如果您将 html 变量设置为 html:

<span class="class">Here's Johnny!</span>

你需要做的:

String html = "javascript:var html='<span class=\"class\">Here\\'s Johnny!</span>';void(0);";

【讨论】:

  • @Umair,另外,如果你有一些像&lt;img src="..." alt="He said, \"Hi!\""/&gt; ^_^ 这样的html,它会变得更加有趣
  • 好的,你的观点奏效了。你能告诉我除了 ' 和 " 之外还有其他字符需要替换吗?我自己发现需要替换为 "\\n" 的 "\n"。为什么会这样?
  • @Umair、'"\` should be the only characters you have to be careful about, "` 因为 Java 将其解释为字符串的结尾,` because Java interprets it as the start of an escape sequence, and '` 因为 javascript 将其解释为字符串的结尾javascript代码中的字符串。如果你的字符串中有\n,那么Java会将其更改为换行符,这意味着在你的javascript中,你的字符串中间会有一个换行符,而不是\n告诉javascript输出换行符。(\\n 告诉 Java 将 \n 放入字符串中)
  • 好的,知道了。我也需要逃避别人吗?像 \r、\t、\b 和任何其他?
  • @Umair,正如我之前所说,您需要转义任何您想要转到 javascript 的 \ 。所以如果你想让一个制表符出现在javascript中,那么\t就可以了,但是如果你想让\t出现在javascript中,那么你需要将\\ 转义为\\ (这样你就会有一个\\t,有效)
【解决方案2】:

在大多数语言中,双引号可以通过转义放在双引号字符串中:

"This is a quoted string: \"I'm a quoted string\"."

这种事情的需要(将带有字符串的js代码插入Java字符串)可能表明您的代码设计不正确。

【讨论】:

  • 您忘记了您的字符串将在这里被解释两次,一次在 Java 中,一次在 Javascript 中。
  • 字符串在 Java 中被“解释”了吗?或者你的意思是变量插值?
  • 也许“解析”比“解释”更好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-19
  • 2017-05-04
  • 1970-01-01
  • 1970-01-01
  • 2016-02-08
  • 1970-01-01
相关资源
最近更新 更多