"split" Funktion in C#

mgd-one

Erfahrenes Mitglied
Hallo zusammen,

ich bin noch net so lange dabei C# zu Programmieren. Wir sind dabei es in der Schule zu lernen.

Leider habe ich überhaupt nicht verstanden wie die "split" Funktion für strings funktioniert.

Der string soll gesplittet werden bei +, -, *, / und = allerdings soll nur eins der argumente zutreffen. Also z.b. 12 + 12 = 24 dann muss ich 12 in einem array element haben + in einem 12 in einem = in einem und 24 soll in ein weiteres element.

Vielen Dank im vorraus.

MfG mgd-one
 

Saber

Erfahrenes Mitglied
Hallo!

Respekt, an welcher Schule lernt man denn C#? Meine Hochachtung an den Lehrer! :)

Also pass auf, die Split()-Funktion arbeitet folgendermaßen:
Sie trennt den String immer dann, wenn sie eines der als Parameter definierten
Zeichen im String findet. Als Rückgabe erhältst Du ein String-Array.

Code:
Split(char [] seperator)

Der Seperator wäre praktisch Dein Trennzeichen.

Auf gut deutsch heisst das jetzt, dass Du Deine Formel am besten an den Leerzeichen trennst.

Hier habe ich Dir etwas Quelltext zusammengeschrieben mit dem Du rumexperimentieren kannst. :)

Code:
			string formel = "12 + 12 = 24";
			string [] erg = formel.Split(' ');
			string ausgabe = "";

			for (int i = 0; i < erg.GetLength(0); i++)
			{
				ausgabe += erg[i] + "\r\n";
			}

			MessageBox.Show(this, ausgabe, "Jedes Zeichen in einer neuen Zeile",
				MessageBoxButtons.OK, MessageBoxIcon.Information);

Eine kurze Erklärung:
Zeile 1: Ein String mit Deiner Formel wird erstellt
Zeile 2: Ich splitte den String an jeden Leerzeichen (zwischen den Hochkammas ist ein Leerzeichen)

Der Rest dient der Ausgabe in einer MessageBox, wobei jeder Array-Eintrag eine eigene Zeile bekommt.

Hoffe es hat Dir geholfen. :D
 

mgd-one

Erfahrenes Mitglied
Vielen Dank für deine Hilfe. Ich denke damit kann ich was anfangen ;).

Die Schule ist ein Berufskolleg und da mach ich ne Ausbildung zum Informationstechnischen Assistenten. Unser Lehrer ist richtig gut und der kann einiges. Bei dem machen wir neben C# auch ASP.Net (mit C#) ist ja kein großer unterschied ist aber trotzdem Hilfreich. Das nur mal so neben bei zur Info ;)

Also nochmals schönen Dank.

MfG mgd-one
 

mgd-one

Erfahrenes Mitglied
Wobei ich doch noch ne kleine Frage hätte kann ich auch mehrere Argumente setzen Z.B. das der bei Leerzeichen UND , trennt

MfG mgd-one
 

Saber

Erfahrenes Mitglied
Sicher. Die Split()-Funktion kann ein char [] (Character Array) aufnehmen. Der Aufruf gestaltet sich dann wie folgt:
Code:
string formel = "12 + 12 = 24";
string [] erg = formel.Split(new char[]{' ', ','});

Du musst praktisch ein neues char-Array erzeugen und dies dann mit den verschiedenen Trennzeichen füllen. :)
 
Zuletzt bearbeitet:

Eased

Grünschnabel
Hallo,

ich habe auch eine Frage zu der split Funktion in C#. Ich habe eure Beispiele mal getestet, die haben auch soweit gut funktioniert. Aber ich habe das Problem, das ich nicht nur ein Zeichen als Seperator haben möchte also nicht

Code:
formel.Split(' ');

sondern mehrere Zeichen.

Code:
formel.Split("Absender:");

sowas zum Beispiel. Kann mir da vielleicht einer helfen? Ich hab auch mal versucht statt einem char-Array einen String zu erzeugen, den aber wieder zu convertieren zu einem char-Array. Das hat aber nicht wirklich geklappt, da gabs ne Exception.

Mit freundlichen Grüßen

Eased
 

Saber

Erfahrenes Mitglied
Du kannst doch in der Split-Funktion ein Char-Array angeben, oder? Musst halt den String in ein solches Array aus Chars (Zeichen) konvertieren und dann in der Split-Funktion angeben. :)
 

Alexander Schuc

crazy-weasel
Dann wird aber wenn irgendwo noch eines der Zeichen vorkommt auch gesplitet

Du könntest vorher im Text das Wort welches als Trennzeichen verwendet werden soll durch irgend ein anderes Zeichen ersetzen, und danach erst die Splitfunktion aufrufen.

Code:
formel.Replace("Absender:",";").Split(";");

Mfg,
Alex
 

Eased

Grünschnabel
Hallo,

danke für eure Antoworten, ich habs auch soweit hinbekommen, allerdings ist schon wieder ein neues Problem aufgetreten. Ich wollte jetzt mal versuchen einen String in Zeilen zu splitten. Gibts da ne entsprechende Funktion für?

mfg Eased