В Java, там способ записать строковый литерал, не имея необходимость выходить из кавычек?

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

На некоторых языках можно просто сделать это:

foo = '"Hello, World"';

В Java, однако, '' используется для chars, таким образом, Вы не можете использовать его для Strings этот путь. Некоторые языки имеют синтаксис для работы вокруг этого. Например, в Python, можно сделать это:

"""A pretty "convenient" string"""

Java имеет что-нибудь подобным?

106
задан Matthew 13 June 2010 в 22:45
поделиться

3 ответа

Ответ отрицательный, и доказательство содержится в Спецификации языка Java :

  StringLiteral:
   "StringCharacters"

  StringCharacters:
   StringCharacter
   | StringCharacters StringCharacter

  StringCharacter:
   InputCharacter but not " or \
   | EscapeSequence

Как видите, StringLiteral может быть просто привязан by " и не может содержать специальный символ без экранирования ..

Примечание: вы можете встроить Groovy в свой проект, это расширит синтаксис Java, позволяя использовать '' 'многострочная строка' '' , '"строка с одинарными кавычками"' , а также "строка с $ {variable}" .

72
ответ дан 24 November 2019 в 03:49
поделиться

Простой ответ: Нет.

Для более длинных строк, которые нужно экранировать, я обычно читаю их из какого-то внешнего ресурса.

4
ответ дан 24 November 2019 в 03:49
поделиться

Нет, и меня всегда раздражало отсутствие в Java различных строково-буквенных синтаксисов.

Вот трюк, который я использовал время от времени:

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

В основном я делаю что-то подобное только для статического поля. Поскольку оно статично, код замены строки вызывается один раз, при инициализации класса. Так что штраф за производительность во время выполнения практически отсутствует, и это делает код значительно более разборчивым.

137
ответ дан 24 November 2019 в 03:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: