Простой / Прямой / Heredoc способ построения HTML-строки в Java - PullRequest
22 голосов
/ 21 апреля 2010

В Python я могу создать строку HTML, не беспокоясь о экранировании специальных символов, таких как <или ", просто заключив строку в тройные кавычки, такие как: </p>

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

Есть ли подобный способ сделать это в Java?

Ответы [ 5 ]

21 голосов
/ 21 апреля 2010

Это не может быть сделано в Java, как в Python. Однако, если вы используете Eclipse, перейдите в Window-> Preferences-> Java-> Editor-> Typing. Последний флажок - «Escape-текст при вставке в строковый литерал». Проверь это. Теперь при вставке курсора между кавычками он будет экранирован.

1 голос
/ 21 апреля 2010

Для упомянутой цели Страницы Java-сервера делают свое дело даже без тройки """ s: -)

1 голос
/ 21 апреля 2010

Нет, но некоторые инструменты избегают его при вставке, например, eclipse.

0 голосов
/ 21 октября 2016

Чтобы повторить трюк Бенджисмита из подобного вопроса , вы можете использовать альтернативный символ и заменить его впоследствии:

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\"}}";
0 голосов
/ 21 апреля 2010

В исходном коде Java двойная кавычка - это специальный символ, используемый для объявления строковых литералов. Вы не можете иметь двойные кавычки в строковом литерале, не избежав его.

В общем, я бы старался избегать жестко кодируемых строк, подобных этой, в исходном коде, особенно если я обнаружил, что часто этим занимаюсь - как вы заметили, с ними трудно иметь дело как с источником, и они вполне вероятно, что изменится, и в этом случае вы можете обойтись без перекомпиляции. Если вам не нужно предоставлять части времени выполнения для текстовых данных, вам может понадобиться что-то такое же простое, как чтение данных из файла свойств, или вы можете использовать механизм шаблонов, такой как Apache Velocity для храните символьные данные отдельно и по-прежнему заменяйте переменные во время выполнения - несколько примеров в связанном руководстве пользователя делают именно это с HTML.

...