La fonctionnalité de bloc de texte multi-lignes Java 13 avec """
délimiteurs devient de plus en plus connue.
Cependant, j'ai un besoin récurrent où j'ai besoin de paragraphes entiers sans les nouvelles lignes intégrées.
En d'autres termes, l'extrait de code suivant:
String paragraph =
"""
aaaa bbbb cccc
dddd eeee ffff
gggg hhhh iiii
""""
System.out.println(paragraph);
produit ce qui suit, comme vous vous en doutez:
aaaa bbbb cccc
dddd eeee ffff
gggg hhhh iiii
... ce qui est généralement extrêmement utile. Cependant, dans mon cas, pour les paragraphes particulièrement volumineux, j'en ai besoin pour produire ceci:
aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii
(.... et traiter le flux de texte plus tard.)
Existe-t-il un moyen d'établir un paramètre "sans nouvelle ligne" pour la fonction de citation triple?
java
string
java-13
preview-feature
une vie
la source
la source
"line" + "line" + "line"
, etc., et sans que la fin de vie n'apparaisse. Éviter une syntaxe aussi obtuse et difficile à maintenir est entièrement le point derrière"""
.Réponses:
Les concepteurs de cette fonctionnalité ont également réalisé cette exigence (voir «Nouvelles séquences d'échappement» dans JEP368). Ainsi, avec la dernière version à accès anticipé pour JDK 14, vous pouvez utiliser une fin
\
pour échapper à la nouvelle ligne à la fin d'une ligne:Tirages:
la source
"aaaa bbbb cccc "
,+"dddd eeee ffff "
et+"gggg hhhh iiii "
, chaque dans une ligne distincte ...\n
, fonctionnent toujours dans des blocs de texte.readString
, les ressources intégrées sont également beaucoup plus faciles à gérer. Je n'ai jamais voulu intégrer des paragraphes entiers dans le code source, seuls les éléments d'E / S étaient ennuyeux.Vous pouvez utiliser
String.lines
introduit depuis Java-11 comme:À titre gratuit et pour ce qui en vaut la peine, voici une capture d'écran de l'exécution par JShell des deux blocs de code différents:
la source
String output = paragraph.replaceAll("[\n\r]", "");
\s
dans le"""
bloc) ne me permet de mélanger des lignes sans fin de ligne avec des lignes où je veux vraiment le retour dur (comme entre les paragraphes, etc.)En effet, trouver une bonne réponse en Java 13 n'est pas facile (peut-être même impossible) mais je pense que Jorn Vernee a répondu avec élégance au problème dans sa réponse (les nouvelles séquences d'échappement en Java 14 fournissent une solution acceptable).
Pour développer plusieurs préoccupations énumérées:
Note pour le modérateur: Je sais que cette réponse viole potentiellement la directive (je ne réponds pas à la question et je réponds aux commentaires des autres utilisateurs), mais je pense qu'il devrait y avoir de la place pour un débat sur les sujets qui sont toujours en cours (n'oublions pas que les blocs de texte sont en mode «second aperçu» ).
la source
paragraph.replaceAll("\\n","")
devrait faire le travail pour vous.la source
""" line line line """.replaceAll("\\n","");
ne pas pouvoir le vérifier maintenant.\s
capacité de JDK-14. Et si je veux plusieurs paragraphes sans sauts de ligne, mais des sauts de ligne entre eux.