Zu deinem Fehler:
Wenn du einfach nur die schließende Klammer zum splitten nimmst, ist das Ergebnis klar. Setze einfach ein Array mit den geschweiften Klammern rein:
new char[] { '{', '}' }
Deine Methode funktioniert zwar (wenn denn SPlit richtig benutzt wird), wirklich gut finde ich das Vorgehen aber nicht.
Außerdem: Bloß keine foreach-Schleife als for-Schleife missbrauchen, dann lieber gleich for.
Hier mal deine Variante überarbeitet:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| var input = "{1,3} {2} {4,5,6}";
var inputParts = input.Split(new char[] { '{', '}' }); inputParts = inputParts.Where(s => !string.IsNullOrWhiteSpace(s)).ToArray();
for (int i = 0; i < inputParts.Length; i++) Console.WriteLine((i + 1) + " -> " + inputParts[i]); |
Andere Möglichkeiten:
Wenn es in den geschweiften Klammern keine Leerzeichengibt, kannst du doch anhand der Leerzeichen den String splitten.
Dann hast du einige Teilstrings, die mit geschweiften Klammern beginnen und enden, die du dann nur noch abschneiden musst.
Ein anderer Weg wäre, Zeiche für Zeichen zu durchlaufen und in einer boll-Variable zu merken, ob du gerade in geschweiften Klammern bist, oder nicht.
Ein dritter Weg wäre Regex. Damit kannst du dann auch sehr viel machen, musst aber erst damit klar kommen.