Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
String mit geschachtelten Listen parsen
fr4gme
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

String mit geschachtelten Listen parsen

beantworten | zitieren | melden

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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von fr4gme am .
private Nachricht | Beiträge des Benutzers
Aratar
myCSharp.de - Member



Dabei seit:
Beiträge: 126

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
fr4gme
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
michlG
myCSharp.de - Experte

Avatar #avatar-2909.png


Dabei seit:
Beiträge: 3652
Herkunft: Naturns - Südtirol - Italien

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
el_panter
myCSharp.de - Member



Dabei seit:
Beiträge: 406
Herkunft: Sömmerda

beantworten | zitieren | melden

[offtopic]
Zitat von Aratar
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
[/offtopic]
MfG Paul
private Nachricht | Beiträge des Benutzers
fr4gme
myCSharp.de - Member



Dabei seit:
Beiträge: 8

Themenstarter:

beantworten | zitieren | melden

danke habs hinbekommen :D
private Nachricht | Beiträge des Benutzers