Kann der Schlüssel in einer Java -Eigenschaft einen leeren Charakter enthalten?
-
22-09-2019 - |
Frage
Wir erhalten Eigenschaften (die wir nicht beeinflussen können) aus einer Datenbank und möchten auf sie durch eine Schlüssel-/Wert -Zuordnung auf sie zugreifen. Wir stehen vor dem Problem, dass einer der Grundstückstasten einen leeren Charakter enthält.
foo bar = barefoot
Dies ist - richtig - wie folgt interpretiert
key: foo
value: bar = barefoot
Gibt es eine Möglichkeit, die Lücke in den Schlüssel aufzunehmen, damit er nicht als Trennzeichen interpretiert wird? Ich denke, dieses Verhalten ist wie beabsichtigt, aber ich dachte, ich könnte es hier versuchen.
Lösung
Wie es scheint, sollte der Trennzeichen sein =
, kein Raum. Somit - keyValuePair.split("=")
sollte tun.
Wenn Sie dies aus einer Java laden .properties
Datei, dann können Sie sich ausdehnen java.util.Properties
und überschreiben diese Methode
public synchronized void load(InputStream inStream) throws IOException
so dass es die Eigenschaften richtig analysiert.
Andere Tipps
Sie können alles in der Eigenschaftendatei mit Java Unicode entkommen:
\u003d
zum=
\u0020
für Whitespace
Zum Beispiel:
foo bar = barefoot
muss sein:
foo\u0020bar\u0020=\u0020barefoot
So wird es sein:
key: "foo bar "
value: " barefoot"
Vielleicht können Sie den Whitespaces entkommen: foo\ bar = barefoot
Bearbeiten: oops, ich habe nicht gesehen, dass Sie die Eigenschaften nicht ändern können.
Ich nehme an, von "Eigenschaften", Sie meinen eine Java -Eigenschaftsdatei (wie geschrieben/gelesen von von java.util.Properties
).
Dann, während du dich selbst schreibst,
foo bar = barefoot
muss tatsächlich als interpretiert werden als
key: foo
value: bar = barefoot
Es gibt keine Möglichkeit, dies mit dem integrierten Konfigurieren zu konfigurieren Properties
Klasse. Sie müssen entweder Ihre Eingabe manipulieren (entkommen der Whitespace, ändern Sie sie in _ und zurück ...) oder schreiben Sie Ihren eigenen Parser. Das Schreiben Ihres eigenen Parsers ist wahrscheinlich besser, da Ihre Eingabe zunächst nicht wirklich eine Java Properties-Datei ist :-).
keyValuePair = keyValuePair.substring(0,indexOf("=")).replaceAll("\\s+") +
keyValuePair.substring(indexOf("="));