Laden...

String mit geschachtelten Listen parsen

Erstellt von fr4gme vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.796 Views
F
fr4gme Themenstarter:in
8 Beiträge seit 2011
vor 13 Jahren
String mit geschachtelten Listen parsen

Hi liebes Forum

mir fehlt momentan folgende Idee zum loesen eines Problems:
ich habe einen String:

string str ="{a,b,c,{d,e,f},g}"

diesen wert möchte ich jetzt strukturieren. D.H jede Sequenz beginnend mit {
und endet mit } ist eine Liste. Wenn innerhalb einer Sequenz wieder ein { beginnt sollte das eine unterliste sein.


Liste<string>
  a
  b
  c
  Liste<string>
     d
     e
     f
  g

mir fehlt momentan die idee wie ich das mache

danke für eure hilfe

grüße

A
118 Beiträge seit 2009
vor 13 Jahren

Hallo,

Ich kann mir zwar nicht vorstellen, wofür du das brauchst, aber ich würde dafür RegEx verwenden.

Du müsstest dich von den innersten Klammerpaaren nach aussen hin arbeiten, schau dazu auch hier nach:
klitzekleiner Formelparser (mit RegEx und viel Lambda/LINQ)

Mfg
Aratar

F
fr4gme Themenstarter:in
8 Beiträge seit 2011
vor 13 Jahren

der text ist nicht von mir so definiert sondern kommt von einem anderen programm

i brauch die werte innerhalb der Sequenz zum auswerten deshalb der aufbau in eine Liste.

danke, aber
gibt es nicht eine einfachere methode als regex?

Mit einer rekursiven methode sollte das doch reichen..
mir fehlt nur grad der Grundgedanke wie ich anfangen soll...

danke

mfg

3.430 Beiträge seit 2007
vor 13 Jahren

Hallo,

du kannst es auch einfach rekursiv machen.
Erstelle dazu einfache eine Klasse die eine Liste enthält um die Chars (a,b,c,d...) zu speichern
Zudem braucht die Klasse noch eine List die Unterobjekte enthält (unterobjekte vom selben Typ)

Dann kannst du einfach Rekursiv vom Anfang des Strings starten.
Wenn du die ersten öffnende Klammer findest dann machst du einen Rekursiven Aufruf und speicherst das Resultat in deine Unterobjekte-Liste
Wenn im Rekursiven Aufruf eine schließende Klammer erreicht wird gibst du einfach die bis dahin gefundenen Buchstaben zurück

Das ist jetzt blöd so zu erklären, aber du hast sicher verstanden was ich damit sagen wollte

Gruß
Michael

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo fr4gme,

so eine rekursive Liste zu parsen, ist wirklich keine große Sache. Für einen ziemlich ähnlichen Fall habe ich es in [erledigt] StringToBool - Parser beschrieben.

herbivore

E
395 Beiträge seit 2007
vor 13 Jahren

Ich kann mir zwar nicht vorstellen, wofür du das brauchst, aber ich würde dafür RegEx verwenden.

ich vermute mal ganz stark das da ein string im json format rein kommt. fals ich falsch liegen solte habe ich nix gesagt

MfG Paul

F
fr4gme Themenstarter:in
8 Beiträge seit 2011
vor 13 Jahren

danke habs hinbekommen 😄