O recurso de bloco de texto de várias linhas Java 13 com """
delimitadores está se tornando bem conhecido.
No entanto, tenho uma necessidade recorrente em que preciso de parágrafos inteiros sem as novas linhas incorporadas.
Em outras palavras, o seguinte snippet de código:
String paragraph =
"""
aaaa bbbb cccc
dddd eeee ffff
gggg hhhh iiii
""""
System.out.println(paragraph);
produz o seguinte, como seria de esperar:
aaaa bbbb cccc
dddd eeee ffff
gggg hhhh iiii
... o que geralmente é tremendamente útil. No entanto, no meu caso, para parágrafos particularmente grandes, preciso que ele produza isso:
aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii
(.... e lide com o fluxo de texto posteriormente.)
Existe uma maneira de estabelecer um parâmetro "sem nova linha" para o recurso de cotação tripla?
java
string
java-13
preview-feature
uma vida
fonte
fonte
"line" + "line" + "line"
, etc., e sem a exibição da EOL. Evitar essa sintaxe obtusa e difícil de manter é inteiramente o ponto por trás"""
.Respostas:
Os projetistas desse recurso também cumpriram esse requisito (consulte 'Novas sequências de escape' no JEP368). Portanto, com a última compilação de acesso antecipado para o JDK 14, você pode usar um trailing
\
para escapar da nova linha no final de uma linha:Impressões:
fonte
"aaaa bbbb cccc "
,+"dddd eeee ffff "
e+"gggg hhhh iiii "
, cada em uma linha distinta ...\n
, ainda funcionam em blocos de texto.readString
, os recursos incorporados também são muito mais fáceis de lidar. Eu nunca quis integrar parágrafos inteiros no código fonte, apenas o material de E / S era irritante.Você pode usar o
String.lines
introduzido desde o Java-11 como:Uma cortesia e pelo que vale a pena, aqui está uma captura de tela da execução do JShell dos dois blocos de código diferentes:
fonte
String output = paragraph.replaceAll("[\n\r]", "");
\s
no"""
bloco) me permite misturar linhas sem EOL com linhas nas quais eu realmente quero o retorno rígido (como entre parágrafos, etc.)De fato, encontrar uma boa resposta no Java 13 não é fácil (talvez até impossível), mas acho que Jorn Vernee abordou a questão de maneira graciosa em sua resposta (novas seqüências de escape no Java 14 fornecem uma solução aceitável).
Para expandir várias preocupações listadas:
Nota para o moderador: Eu sei que esta resposta viola potencialmente as diretrizes (não abordo a pergunta e respondo aos comentários de outros usuários), mas acho que deve haver espaço para debate sobre os tópicos que ainda estão em andamento. (não vamos esquecer que os blocos de texto estão no modo 'segunda visualização' ).
fonte
paragraph.replaceAll("\\n","")
deve fazer o trabalho para você.fonte
""" line line line """.replaceAll("\\n","");
não conseguir verificar agora.\s
capacidade do JDK-14. E se eu quiser vários parágrafos sem quebras de linha, mas quebras de linha entre eles.