So suchen Sie eine Zeichenfolge von Schlüssel/Wert-Paare in Java
Habe ich eine Zeichenfolge, die wie folgt formatiert:
"key1=value1;key2=value2;key3=value3"
für eine beliebige Anzahl von Schlüssel/Wert-Paaren.
Brauche ich, um zu überprüfen, ob ein bestimmter Schlüssel vorhanden ist (sagen wir mal es heißt "specialkey"). Wenn es funktioniert, ich will den Wert zugeordnet. Wenn es mehrere "specialkey"s eingestellt, ich will nur das erste.
Gerade jetzt, ich bin auf der Suche nach dem index der "specialkey". Ich nehme einen Teilstring ab index suchen, dann schauen Sie für den index des ersten =
Charakter. Dann Suche ich mir den index des ersten ;
Charakter. Die Teilzeichenkette zwischen diesen beiden Indizes gibt mir den Wert im Zusammenhang mit "specialkey".
Dies ist nicht eine elegante Lösung, und es ist wirklich stört mich. Was einen eleganten Weg zu finden, der Wert, der entspricht mit "specialkey"?
InformationsquelleAutor user438293456 | 2012-03-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden String.split:
Dadurch erhalten Sie ein array
kvPairs
enthält die folgenden Elemente:Durchlaufen Sie diese und teilen Sie Sie, auch:
InformationsquelleAutor icyrock.com
Würde ich parse den String in eine map und dann nur überprüfen Sie für den Schlüssel:
InformationsquelleAutor Mike Sickler
Wenn es nur der eine Schlüssel, den Sie möchten, könnten Sie regex
\bspecialkey=([^;]+)(;|$)
extrahieren und Aufnahme Gruppe 1:Wenn du etwas tust mit dem anderen Schlüssel, dann split auf
;
und dann=
innerhalb einer Loop-Schleife - keine Notwendigkeit für eine regex.InformationsquelleAutor mathematical.coffee
Nur für den Fall jemand interessiert ist, in eine Reine Regex-basierte Ansatz, der folgende Codeausschnitt funktioniert.
Ausgang
Jedoch, wie andere zuvor erklärt,
- String.split()
wird empfohlen, jeden Tag für diese Art von Aufgabe. Sie sollten nicht Ihr Leben erschweren, versucht die Regex, wenn es eine alternative zu verwenden.InformationsquelleAutor asgs
Regex ist gut geeignet, um passenden und Analyse zugleich:
InformationsquelleAutor sweaver2112