Die mehrzeilige Java 13-Textblockfunktion mit """
Trennzeichen wird immer bekannter.
Ich habe jedoch einen wiederkehrenden Bedarf, bei dem ich ganze Absätze ohne die eingebetteten Zeilenumbrüche benötige.
Mit anderen Worten, das folgende Code-Snippet:
String paragraph =
"""
aaaa bbbb cccc
dddd eeee ffff
gggg hhhh iiii
""""
System.out.println(paragraph);
erzeugt wie erwartet Folgendes:
aaaa bbbb cccc
dddd eeee ffff
gggg hhhh iiii
... was normalerweise enorm nützlich ist. In meinem Fall benötige ich es jedoch für besonders große Absätze, um Folgendes zu erstellen:
aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii
(.... und später mit dem Textfluss umgehen.)
Gibt es eine Möglichkeit, einen "No-Newline" -Parameter für die Funktion mit dreifachen Anführungszeichen festzulegen?
java
string
java-13
preview-feature
ein Leben
quelle
quelle
"line" + "line" + "line"
usw. und ohne dass die EOLs angezeigt werden. Das Vermeiden einer solchen stumpfen und schwer zu pflegenden Syntax ist der eigentliche Punkt dahinter"""
.Antworten:
Die Entwickler dieser Funktion haben diese Anforderung ebenfalls erkannt (siehe 'Neue Escape-Sequenzen' in JEP368). Mit dem neuesten Early Access Build für JDK 14 können Sie also ein Trailing verwenden
\
, um die neue Zeile am Ende einer Zeile zu umgehen:Drucke:
quelle
"aaaa bbbb cccc "
ist+"dddd eeee ffff "
, und+"gggg hhhh iiii "
jeder in einer bestimmten Linie…\n
weiterhin in Textblöcken funktionieren.readString
, sind eingebettete Ressourcen auch viel einfacher zu handhaben. Ich wollte nie ganze Absätze in den Quellcode integrieren, nur das E / A-Zeug war nervig.Sie können
String.lines
eingeführt seit Java-11 verwenden als:Ein kostenloser und für das, was es wert ist, hier ein Screenshot von der JShell-Ausführung der beiden verschiedenen Codeblöcke:
quelle
String output = paragraph.replaceAll("[\n\r]", "");
\s
im"""
Block) ermöglicht es mir, EOL-freie Zeilen mit Zeilen zuIn Java 13 ist es zwar nicht einfach (vielleicht sogar unmöglich), eine gute Antwort zu finden, aber ich denke, Jorn Vernee hat das Problem in seiner Antwort anmutig angesprochen (neue Escape-Sequenzen in Java 14 bieten eine akzeptable Lösung).
So erweitern Sie einige der aufgeführten Probleme:
Hinweis für den Moderator: Ich weiß, dass diese Antwort möglicherweise gegen die Richtlinie verstößt (ich gehe nicht auf die Frage ein und antworte auf die Kommentare anderer Benutzer), aber ich denke, es sollte Raum für Debatten zu den Themen geben, die noch in Arbeit sind (Vergessen wir nicht, dass sich Textblöcke im Modus "Zweite Vorschau" befinden. )
quelle
paragraph.replaceAll("\\n","")
sollte den Job für Sie erledigen.quelle
""" line line line """.replaceAll("\\n","");
momentan nicht verifizieren kann.\s
Fähigkeit von JDK-14 nicht ganz erreichen . Was ist, wenn ich mehrere Absätze ohne Zeilenumbrüche möchte, aber dazwischen Zeilenumbrüche.