Laden...

Zeichenkette splitten

Erstellt von BS2000 vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.140 Views
B
BS2000 Themenstarter:in
3 Beiträge seit 2019
vor 4 Jahren
Zeichenkette splitten

Hallo zusammen,

bin neu hier und lerne C#, also Anfänger. Ich habe eine Frage zu Zeichenketten(Strings).

Wie kann ich aus einen String in der Form
eingabe ="Herr Max Mustermann 12345 Musterstadt\nTelefon: "

mehrere Einzelstrings machen.

Form:

Anrede = "Herr"
Name = "Max Mustermann"
PLZ = "12345"
Ort = "Musterstadt"
Telefon = "Telefon: "

Die Eingabe besteht aus eine Exceldatei die mehrere Zeilen in einer Spalte beinhaltet
und die sich auch im Format unterscheiden,
also es gibt auch die Variante
eingabe ="Herr Max Mustermann\n 12345 Musterstadt"

Das Importieren von Excel ist kein Problem, ich weiss halt nicht genau wie ich die unterschiedlichen
Formate behandeln soll. Die Methoden Trim() und Split() kenne ich aber ich bekomme z.b. das
"\n" nich aus dem Eingabestring gelöscht.

Würde mich über einen Tip von euch sehr freuen!

VG
BS2000

4.931 Beiträge seit 2008
vor 4 Jahren

Hallo und willkommen,

mit dem Wort 'splitten' hast du schon das richtige Stichwort: String.Split.
Anscheinend weißt du nur nicht, wie man diese Methode richtig anwendet?!
Mit str.Split(new char[] { ' ', '\n' }) würdest du beispielsweise anhand der beiden Zeichen splitten (und mit den StringSplitOptions als weiteren Parameter hast du noch weitere Möglichkeiten).

B
BS2000 Themenstarter:in
3 Beiträge seit 2019
vor 4 Jahren

Vielen Dank für deine Info und den netten Willkommensgruß. Der Aufruf str.Split(new char[] { ' ', '\n' }) war sehr hilfreich, allerdings kann ich anstelle eines Leerzeichens als Trennzeichen auch mehrere Spacezeichen verwenden? Also eingabe ="Herr Max Mustermann (TRENNZEICHEN mehrere Zeichen) 12345 Musterstadt\nTelefon: "

Zwischen den Wörtern können auch mehr als ein Leerzeichen auftauchen, dan müste das Konstrukt so aussehen: str.Split(new string[] { " ", '\n' }) ?

Viele Grüße

4.931 Beiträge seit 2008
vor 4 Jahren

Dafür habe ich dir ja den Hinweis auf StringSplitOptions gegeben (StringSplitOptions.RemoveEmptyEntries 😉.

Die Überladung mittels string[] nimmt dann die kompletten Stringeinträge als mögliche Trennzeichen (also z.B. bei new string[] { "+-", "\n" } nur, wenn auch +- auftaucht, nicht wenn nur ein + oder - auftaucht).

B
BS2000 Themenstarter:in
3 Beiträge seit 2019
vor 4 Jahren

Guten Morgen Th69,

ich hab mal etwas gecodet:


string s1 = "Herr Max Mustermann(dazwischenleerzeichen) 12345 Musterstadt\nTelefon";
char[] charSeparators = new char[] {'\n'};
string[] stringSeparators = new string[] {"  "};
string[] result;

result = s1.Split(stringSeparators , StringSplitOptions.None);
result [4].Split (charSeparators, StringSplitOptions.None);

Er splittet es auch schön in fünf Felder auf, aber beim letzen also 1234 Musterstadt\nTelefon
splittet das Programm nicht weiter auf, es bleibt so wie es ist.

Kann ich nicht sozugagen einen Split auf Split machen? Eine Anweisung in der Art result = s1.Split(stringSeparators , charSeparators, StringSplitOptions.None) ist ja leider nicht möglich

Vielen Dank und Gruß

Hinweis von Abt vor 4 Jahren

Bitte Code Tags verwenden
[Hinweis] Wie poste ich richtig?

4.931 Beiträge seit 2008
vor 4 Jahren

Bei deiner letzten Zeile mußt du auch das Ergebnis verwenden:


string[] result2 = result[4].Split(charSeparators, StringSplitOptions.None);

PS: Bitte benutzte Code-Tags (C#) hier im Forum