【问题标题】:Simple/Direct/Heredoc way of constructing a HTML string in Java在 Java 中构造 HTML 字符串的简单/直接/Heredoc 方式
【发布时间】:2011-02-10 07:57:51
【问题描述】:

在 python 中,我可以构造一个 HTML 字符串,而不必担心转义特殊字符,如

html_string = """
<html>
<body>
<p>My text with "quotes" and whatnot!<p>
</body>
</html>
"""

在 Java 中有类似的方法吗?

【问题讨论】:

标签: java html string heredoc convenience-methods


【解决方案1】:

它不能像在 Python 中那样在 Java 中完成。但是,如果您使用 Eclipse,请转到 Window->Preferences->Java->Editor->Typing 最后一个复选框是“Escape text when paste into a String literal”。检查那个。现在,当您在光标位于引号之间时粘贴时,它将被转义。

【讨论】:

  • 总有一个复选框;o)
【解决方案2】:

要从 similar question 中呼应 benjismith 的技巧,您可以使用替代字符并在之后替换它们:

String myString = "using `backticks` instead of quotes".replace('`', '"');

我在使用 JSON 编写测试时发现它很有帮助

String json = "{`kind`:`file`,`sid`:802,`rid`:5678 ,`attrs`:{`name`:`FILE-WG-2468`}}".replace('`', '"');
// vs
String json = "{\"kind\":\"file\",\"sid\":802,\"rid\":5678 ,\"attrs\":{\"name\":\"FILE-WG-2468\"}}";

【讨论】:

  • 缺少heredocs 是目前我对java 最讨厌的 项,但这是一个减轻痛苦的好方法。我将编写正确的字符串,然后使用 Intellij“在选择中替换”说 ~(使用频率低于 '`')
【解决方案3】:

没有,但有些工具会在您粘贴时为您转义,例如 eclipse。

【讨论】:

  • 很好,不知道!您将如何在 Eclipse 中执行此操作?我正在运行 Eclipse Galileo,当我粘贴 HTML 代码时,它只是被复制了。
  • Window>Preferences>Java>Editor>Typing check Escape text when pastein a string literal
【解决方案4】:

出于上述目的,Java Server Pages 即使没有三倍的""" 也能做到这一点:-)

【讨论】:

    【解决方案5】:

    在 Java 源代码中,双引号是一个特殊字符,用于声明字符串字面量。在不转义的情况下,您不能在字符串文字中使用双引号。

    一般来说,我会尽量避免在源代码中对字符串进行硬编码,特别是如果我发现自己经常这样做 - 正如您所指出的,将它们作为源代码处理会很痛苦,而且它们可能很可能会改变,在这种情况下你可以不重新编译。如果您不需要为文本数据提供运行时部分,您可以使用从属性文件中读取数据这样简单的方法,或者您可以使用像 Apache Velocity 这样的模板引擎来保持字符数据分开并且仍然在运行时替换变量 - 链接用户指南中的几个示例正是使用 HTML 实现的。

    【讨论】:

    • 我完全同意,但是为了快速测试(确定错误),我总是喜欢在我的袖子里有一些快速n-dirty技巧;o)
    • 同意 - 一切都取决于上下文。在这种情况下,听起来 Eclipse 技巧是 ftw !
    • Embedded heredoc's 是我开发过程的核心部分,尤其是在测试用例和配置相关逻辑方面。我(幸运地)离开 Java 6 年了,但回来对这个前端和中心感到很痛苦。上面关于用其他东西替换双引号的技巧可能是目前最不痛苦的黑客攻击。
    猜你喜欢
    • 2023-03-09
    • 2010-09-27
    • 2020-02-24
    • 1970-01-01
    • 2018-07-09
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多