Средство многострочного текстового блока Java 13 с """
разделителями становится широко известным.
Однако у меня есть постоянная необходимость, когда мне нужны целые абзацы без встроенных символов новой строки.
Другими словами, следующий фрагмент кода:
String paragraph =
"""
aaaa bbbb cccc
dddd eeee ffff
gggg hhhh iiii
""""
System.out.println(paragraph);
производит следующее, как и следовало ожидать:
aaaa bbbb cccc
dddd eeee ffff
gggg hhhh iiii
... что обычно чрезвычайно полезно. Однако в моем случае, для особенно больших абзацев, мне нужно, чтобы это было сделано так:
aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii
(.... и разберись с потоком текста позже.)
Есть ли способ установить параметр "без новой строки" для функции тройной кавычки?
java
string
java-13
preview-feature
жизнь
источник
источник
"line" + "line" + "line"
т. Д. И без отображения EOL. Избегание такого тупого и сложного в использовании синтаксиса - все дело в этом"""
.Ответы:
Разработчики этой функции также осознали это требование (см. «Новые escape-последовательности» в JEP368). Итак, с последней ранней сборкой доступа для JDK 14 вы можете использовать трейлинг
\
для выхода из новой строки в конце строки:Печать:
источник
"aaaa bbbb cccc "
,+"dddd eeee ffff "
и+"gggg hhhh iiii "
каждое в отдельной строке ...\n
, по-прежнему работают в текстовых блоках.readString
, встроенные ресурсы гораздо проще обрабатывать. Я никогда не хотел интегрировать целые абзацы в исходный код, меня раздражали только вещи ввода / вывода.Вы можете использовать
String.lines
введенный начиная с Java-11 как:Вот бесплатный пример того, как JShell выполняет два разных блока кода:
источник
String output = paragraph.replaceAll("[\n\r]", "");
\s
в"""
блоке) не позволяет мне перемешивать EOL-меньше линий с линиями , где я на самом деле хочу жесткий возврат (например, между пунктами, и т.д.)Действительно, найти хороший ответ в Java 13 нелегко (возможно, даже невозможно), но я думаю, что Джорн Верни изящно рассмотрел проблему в своем ответе (новые escape-последовательности в Java 14 обеспечивают приемлемое решение).
Чтобы расширить некоторые перечисленные проблемы:
Примечание для модератора: я знаю, что этот ответ потенциально нарушает правила (я не отвечаю на вопрос и отвечаю на комментарии других пользователей), но я думаю, что должно быть место для дебатов по темам, которые все еще находятся в процессе разработки (давайте не будем забывать, что текстовые блоки находятся в режиме «второго предварительного просмотра» ).
источник
paragraph.replaceAll("\\n","")
должен сделать работу за вас.источник
""" line line line """.replaceAll("\\n","");
не могу проверить это сейчас.\s
JDK-14. Что делать, если я хочу несколько абзацев без разрывов строк, но между ними разрывы строк.