El recurso de bloque de texto de múltiples líneas Java 13 con """
delimitadores se está volviendo muy conocido.
Sin embargo, tengo una necesidad recurrente donde necesito párrafos enteros sin las nuevas líneas incrustadas.
En otras palabras, el siguiente fragmento de código:
String paragraph =
"""
aaaa bbbb cccc
dddd eeee ffff
gggg hhhh iiii
""""
System.out.println(paragraph);
produce lo siguiente, como era de esperar:
aaaa bbbb cccc
dddd eeee ffff
gggg hhhh iiii
... que suele ser tremendamente útil. Sin embargo, en mi caso, para párrafos particularmente grandes lo necesito para producir esto:
aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii
(.... y lidiar con el flujo de texto más adelante).
¿Hay alguna forma de establecer un parámetro "sin nueva línea" para la función de triple comilla?
java
string
java-13
preview-feature
una vida
fuente
fuente
"line" + "line" + "line"
, etc., y sin la RFL de aparecer. Evitar una sintaxis tan obtusa y difícil de mantener es completamente el punto detrás"""
.Respuestas:
Los diseñadores de esta característica también se dieron cuenta de este requisito (ver 'Nuevas secuencias de escape' en JEP368). Entonces, con la última compilación de acceso temprano para JDK 14 , puede usar un seguimiento
\
para escapar de la nueva línea al final de una línea:Huellas dactilares:
fuente
"aaaa bbbb cccc "
,+"dddd eeee ffff "
y+"gggg hhhh iiii "
, cada en una línea distinta ...\n
, todavía funcionan en bloques de texto.readString
, los recursos integrados también son mucho más fáciles de manejar. Nunca quise integrar párrafos enteros en el código fuente, solo las cosas de E / S eran molestas.Puede usar
String.lines
introducido desde Java-11 como:Un complemento y para lo que vale la pena, aquí hay una captura de pantalla de la ejecución de JShell de los dos bloques de código diferentes:
fuente
String output = paragraph.replaceAll("[\n\r]", "");
\s
en el"""
bloque) me permite mezclar líneas sin EOL con líneas donde realmente quiero el retorno difícil (como entre párrafos, etc.)De hecho, encontrar una buena respuesta en Java 13 no es fácil (tal vez incluso imposible), pero creo que Jorn Vernee abordó la preocupación con gracia en su respuesta (las nuevas secuencias de escape en Java 14 proporcionan una solución aceptable).
Para ampliar sobre varias preocupaciones enumeradas:
Nota para el moderador: Sé que esta respuesta potencialmente viola la directriz (no abordo la pregunta y respondo a los comentarios de otros usuarios), pero creo que debería haber espacio para el debate sobre los temas que aún están en progreso (no olvidemos que los bloques de texto están en modo 'segunda vista previa' ).
fuente
paragraph.replaceAll("\\n","")
debería hacer el trabajo por ti.fuente
""" line line line """.replaceAll("\\n","");
No puedo verificarlo ahora.\s
capacidad de JDK-14. ¿Qué pasa si quiero varios párrafos sin saltos de línea, pero los saltos de línea entre ellos?