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.

War es hilfreich?

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("="));  
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top