Angenommen, Sie haben ein String-Literal mit vielen Anführungszeichen. Sie könnten ihnen allen entkommen, aber es ist ein Schmerz und schwer zu lesen.
In einigen Sprachen können Sie dies einfach tun:
foo = '"Hello, World"';
In Java wird es jedoch ''
für char
s verwendet, sodass Sie es auf String
diese Weise nicht für s verwenden können. Einige Sprachen haben eine Syntax, um dies zu umgehen. In Python können Sie beispielsweise Folgendes tun:
"""A pretty "convenient" string"""
Hat Java etwas Ähnliches?
System.out.println(mapperObj.writeValueAsString(mapperObj.readValue(str, Object.class)));
Antworten:
Die Antwort lautet Nein, und der Beweis befindet sich in der Java-Sprachspezifikation :
Wie Sie sehen können,
StringLiteral
kann a nur durch Escapezeichen gebunden werden"
und keine Sonderzeichen enthalten.Eine Randnotiz: Sie können Groovy in Ihr Projekt einbetten , dies erweitert die Syntax von Java, die Sie verwenden können
'''multi line string '''
,' "string with single quotes" '
und auch"string with ${variable}"
.quelle
Nein, und ich habe mich immer über das Fehlen verschiedener String-Literal-Syntaxen in Java geärgert.
Hier ist ein Trick, den ich von Zeit zu Zeit verwendet habe:
Ich mache so etwas hauptsächlich nur für ein statisches Feld. Da es statisch ist, wird der String-Replace-Code bei der Initialisierung der Klasse einmal aufgerufen. Der Laufzeitleistungsverlust ist also praktisch nicht vorhanden und macht den Code wesentlich besser lesbar.
quelle
Update Dezember 2018 (12 Monate später):
Rohe String-Literale (die auf der gelben Liste stehen ) schaffen es nicht bis JDK 12.
Siehe die Kritik hier .
Möglicherweise gibt es in einer zukünftigen Version von Java (10 oder mehr).
Siehe JEPS 8196004 vom Januar 2018: ( "JEP" ist das "JDK-Erweiterungsprogramm" )
Also statt:
Sie könnten Folgendes eingeben:
Ordentlich!
Aber es ist immer noch nur ein Entwurf : Es muss veröffentlicht, eingereicht, ein Kandidat sein und finanziert werden, bevor es fertiggestellt und in das nächste JDK aufgenommen wird.
quelle
Einfache Antwort: Nein.
Für längere Zeichenfolgen, die maskiert werden müssen, lese ich sie normalerweise aus einer externen Ressource.
quelle
Sie können auch StringEscapeUtils von Apache Commons verwenden
UPDATE : Wenn jemand an einigen Beispielen interessiert ist, finden Sie hier einen nützlichen Link: https://dzone.com/articles/commons-lang-3-improved-and-powerful-StringEscapeUtils
quelle
String
s, daher gibt es keine Möglichkeit, einen gut formatierten Wert in Ihrem Code zu haben. Vermutlich könnten Sie diese Methoden verwenden, um aus einer Datei in eine zu lesenString
, aber ich denke nicht, dass dies hier die Frage ist.Folgendes scheint für mich zu funktionieren:
Ich denke, weil char der primitive Variablentyp für String ist, können Strings und Zeichen kombiniert werden (zumindest scheint sich der Eclipse-Compiler nicht zu beschweren).
quelle
Wenn Sie entkommen möchten
'
oder"
in Ihrer Zeichenfolge, können Sie den folgenden Code verwenden:quelle