Wie kann ich das Gleichheitszeichen ( =
) in Java-Eigenschaftendateien umgehen? Ich möchte Folgendes in meine Datei aufnehmen:
table.whereclause=where id=100
quelle
Wie kann ich das Gleichheitszeichen ( =
) in Java-Eigenschaftendateien umgehen? Ich möchte Folgendes in meine Datei aufnehmen:
table.whereclause=where id=100
Weitere Informationen finden Sie in der Methode zum Laden (Reader Reader) aus der Property
Klasse auf Javadoc
In der load(Reader reader)
Methodendokumentation heißt es
Der Schlüssel enthält alle Zeichen in der Zeile mit den ersten nicht-weißen Leerzeichen beginnen und bis zu, aber nicht einschließlich, die erste unescaped
'='
,':'
oder Raumzeichen andere als ein Leitungsabschluss. Alle diese Schlüsselabschlusszeichen können in den Schlüssel aufgenommen werden, indem sie mit einem vorhergehenden Backslash-Zeichen maskiert werden. beispielsweise,\:\=
wäre die zweistellige Taste
":=".
Zeilenabschlusszeichen können mit\r
und\n
Escape-Sequenzen eingefügt werden. Alle Leerzeichen nach dem Überspringen des Schlüssels; Wenn das erste nicht Leerzeichen nach dem Schlüssel'='
oder ist':'
, wird es ignoriert und alle Leerzeichen nach dem Schlüssel werden ebenfalls übersprungen. Alle verbleibenden Zeichen in der Zeile werden Teil der zugehörigen Elementzeichenfolge. Wenn keine verbleibenden Zeichen vorhanden sind, ist das Element die leere Zeichenfolge""
. Sobald die rohen Zeichenfolgen, aus denen der Schlüssel und das Element bestehen, identifiziert sind, wird die Escape-Verarbeitung wie oben beschrieben durchgeführt.
Hoffentlich hilft das.
In Ihrem speziellen Beispiel müssen Sie nicht den Gleichen entkommen - Sie müssen nur entkommen, wenn es Teil des Schlüssels ist. Das Eigenschaftendateiformat behandelt alle Zeichen nach dem ersten nicht entkoppelten Gleichheitszeichen als Teil des Werts.
Das Standard-Escapezeichen in Java ist '\'.
Die Java-Eigenschaftendatei hat jedoch das Format key = value. Sie sollte alles nach dem ersten Wert als Wert berücksichtigen.
quelle
Der beste Weg, um diese Art von Problemen zu vermeiden, besteht darin, Eigenschaften programmgesteuert zu erstellen und sie dann zu speichern. Verwenden Sie beispielsweise folgenden Code:
Dies würde in System.out die ordnungsgemäß maskierte Version ausgeben.
In meinem Fall war die Ausgabe:
Wie Sie sehen, ist dies eine einfache Möglichkeit, Inhalte von .properties-Dateien zu generieren, die garantiert korrekt sind. Und Sie können so viele Eigenschaften platzieren, wie Sie möchten.
quelle
In meinem Fall funktionieren zwei führende '\\' gut für mich.
Beispiel: Wenn Ihr Wort das Zeichen '#' enthält (z. B. aa # 100, können Sie es mit zwei führenden '\\' maskieren.
quelle
Sie können hier nachsehen. Kann der Schlüssel in einer Java-Eigenschaft ein Leerzeichen enthalten?
für Flucht gleich '=' \ u003d
table.whereclause = wobei id = 100
Schlüssel: [table.whereclause] Wert: [wobei id = 100]
table.whereclause \ u003dwhere id = 100
Schlüssel: [table.whereclause = where] Wert: [id = 100]
table.whereclause \ u003dwhere \ u0020id \ u003d100
Schlüssel: [table.whereclause = wobei id = 100] Wert: []
quelle
In der Datei Spring oder Spring boot application.properties können Sie den Sonderzeichen entkommen.
table.whereclause = wobei id '\ =' 100
quelle
Diese Methode soll dazu beitragen, programmgesteuert Werte zu generieren, die garantiert 100% kompatibel mit
.properties
Dateien sind:Sie können es so nennen:
Diese Methode ist etwas teuer, aber das Schreiben von Eigenschaften in eine Datei ist normalerweise ohnehin eine sporadische Operation.
quelle
Ich konnte Werte innerhalb des Zeichens eingeben ":
quelle