Parsen der Java-Zeichenfolge - {k1 = v1, k2 = v2, ...}

8

Ich habe die folgende Zeichenfolge, die wahrscheinlich ~ 100 Einträge enthalten wird:

%Vor%

und ich versuche, die folgende Funktion zu schreiben:

%Vor%

Ich möchte das tun, ohne eine Parsing-Bibliothek zu verwenden. Irgendwelche Ideen für etwas Schnelles?

    
tinkertime 29.10.2009, 15:53
quelle

7 Antworten

12

Wenn Sie wissen, dass Ihre Zeichenfolge immer so aussehen wird, versuchen Sie etwas wie:

%Vor%

Warnung: Ich habe das nicht wirklich versucht; Es könnte kleinere Syntaxfehler geben, aber die Logik sollte solide sein. Beachten Sie, dass ich auch die Fehlerüberprüfung genau null gesetzt habe, also sollten Sie das, was ich gemacht habe, robuster machen.

    
Tenner 29.10.2009, 16:01
quelle
4

Die schnellste, aber hässlichste Antwort, die ich mir vorstellen kann, besteht darin, sie mit einer Zustandsmaschine Zeichen für Zeichen zu analysieren. Es ist sehr schnell, aber sehr spezifisch und ziemlich komplex. So wie ich es sehe, könnte man mehrere Zustände haben:

  • Parsing-Schlüssel
  • Parsing-Wert
  • Bereit

Beispiel:

%Vor%

Außerdem können Sie dies viel schneller mit StringTokenizern (die schnell sind) oder Regexs (die langsamer sind) implementieren. Aber insgesamt ist das Parsen einzelner Zeichen höchstwahrscheinlich der schnellste Weg.

    
Malaxeur 29.10.2009 16:01
quelle
2

Wenn die Zeichenfolge viele Einträge enthält, können Sie besser manuell ohne einen StringTokenizer analysieren, um etwas Speicher zu sparen (für den Fall, dass Sie Tausende dieser Zeichenfolgen analysieren müssen, ist es den zusätzlichen Code wert):

%Vor%

Ich habe diesen Code mit diesen Strings getestet und es funktioniert gut:

{k1 = v1}

{k1 = v1, k2 = v2, k3 = v3, k4 = v4}

{k1 = v1,}

    
Chochos 29.10.2009 16:12
quelle
0

Ohne Test geschrieben:

%Vor%

Ja, es ist hässlich: -)

    
cadrian 29.10.2009 16:03
quelle
0

Nun, wenn man kein '=' oder ',' in Werten annimmt, ist die einfachste (und schäbigste) Methode:

%Vor%

Ja, nicht empfohlen:)

    
sinuhepop 29.10.2009 16:08
quelle
0

Das Hinzufügen von Code zur Überprüfung der Existenz von key in foo bleibt dem Leser als Übung überlassen: -)

%Vor%     
rsp 29.10.2009 16:59
quelle
0

Bitte finden Sie meine Lösung:

%Vor%

Verwendung

%Vor%     
Foobnix 25.10.2012 19:51
quelle

Tags und Links