CodeGym /Kurse /C# SELF /Fortgeschrittene Methoden der Klasse string

Fortgeschrittene Methoden der Klasse string

C# SELF
Level 9 , Lektion 4
Verfügbar

1. Substring in einem String suchen

In der letzten Vorlesung hast du gelernt, wie man ein Substring aus einem String bekommt. Jetzt schauen wir uns an, wie man einen String im anderen findet. Dafür gibt es 5 coole Methoden:

Methode Contains: Enthält der String das Substring?

Gibt true zurück, wenn der übergebene String im aufrufenden String enthalten ist.

string phrase = "Wind der Veränderungen";
bool hasWord = phrase.Contains("Veränderungen"); // true
Überprüfung auf Substring mit Contains

Die Suche ist case-sensitiv! "wind".Contains("W")false.

Methode IndexOf: Position des Substrings finden

Funktioniert ähnlich wie IndexOf bei Arrays: Sucht das Substring im String (von Anfang bis Ende) und gibt den Index des ersten Vorkommens zurück.

string text = "wassermelonewassermelone";
int index = text.IndexOf("melone"); // 2
Suche nach der Position eines Substrings mit IndexOf
  • Wenn nichts gefunden wird, gibt es -1 zurück.
  • Es gibt eine Alternative mit Startposition: IndexOf("melone", 4). Genau wie bei Arrays.

Methode LastIndexOf: letztes Vorkommen

Funktioniert auch wie LastIndexOf bei Arrays: Sucht das Substring im String (von Ende zu Anfang) und gibt den Index des ersten Vorkommens von hinten zurück.

string repeated = "aufgabe aufgabe";
int last = repeated.LastIndexOf("aufgabe"); // 7
Suche nach dem letzten Vorkommen eines Substrings mit LastIndexOf

Beginnt/endet der String mit einem bestimmten Substring?

Oft muss man prüfen, ob unser String mit einem bestimmten Substring beginnt (oder endet). Dafür gibt es zwei Methoden:

  • StartsWith — prüft, ob der String mit einem bestimmten Substring beginnt;
  • EndsWith — prüft, ob der String mit einem bestimmten Substring endet.
string fileName = "foto.jpg";
bool isJpg = fileName.EndsWith(".jpg"); // true

string email = "support@company.com";
bool isSupport = email.StartsWith("support"); // true
Überprüfung von Anfang und Ende eines Strings

Wenn du ohne Beachtung der Groß-/Kleinschreibung vergleichen willst, musst du einen zusätzlichen Parameter mit dem Vergleichsmodus übergeben (siehe Doku zu StringComparison.OrdinalIgnoreCase).

2. Methode Replace: Zeichen und Substrings ersetzen

Die Methode Replace ersetzt alle Vorkommen von String A durch String B. Ursprünglich als Tool gegen Tippfehler, Zensur und Variablenersetzung in Templates gedacht! (Kleiner Scherz.)

string address = "London, Baker-Straße";
string updated = address.Replace("London", "Paris");
Console.WriteLine(updated); // "Paris, Baker-Straße"
Substring ersetzen mit Replace
  • Du kannst sogar einzelne Zeichen ersetzen: str.Replace('a', 'z')
  • Wichtig: Alle Ersetzungen passieren im ganzen String, nicht nur beim ersten Vorkommen.

3. Methode Split: String in Stücke schneiden

Die Methode Split macht Folgendes: Sie nimmt deinen String und schneidet ihn in Teile, indem sie Trennzeichen verwendet – Zeichen oder Strings, an denen geteilt werden soll. Die Methode gibt ein Array von Strings zurück, in die der Ursprungsstring zerlegt wurde.

string[] parts = originalString.Split(separator);
Syntax der Methode Split
  • separator — Zeichen oder Array von Zeichen, die als Trennzeichen verwendet werden.

Das einfachste Beispiel

Wir teilen den String am Leerzeichen:

string input = "apfel birne orange banane";
string[] fruits = input.Split(' '); 	// enthält das Array ["apfel","birne","orange","banane"]
Console.WriteLine(fruits[0]); 			// "apfel"
Console.WriteLine(fruits[1]); 			// "birne"

Hier bekommen wir ein Array mit 4 Strings, wobei jedes Wort ein eigenes Element ist.

Mehrere Trennzeichen

Manchmal gibt es im String nicht nur ein Trennzeichen. Zum Beispiel könnte der User Werte mit Leerzeichen, Komma oder Semikolon eingeben.

In solchen Fällen kann man ein Array von Trennzeichen verwenden:

string input = "apfel, birne; orange banane";
char[] separators = { ' ', ',', ';' };
string[] fruits = input.Split(separators, StringSplitOptions.RemoveEmptyEntries);

Bonus: Der optionale Parameter StringSplitOptions.RemoveEmptyEntries entfernt leere Fragmente. Das ist praktisch, wenn der User mehrere Trennzeichen hintereinander eingegeben hat – zum Beispiel zwei Leerzeichen oder sowas wie "apfel,, birne".

Trennen nach Substring

Trennzeichen können auch Strings sein, nicht nur einzelne Zeichen. Zum Beispiel, wenn du eine CSV-Datei mit dem Trennzeichen ";" oder | hast:

// Trennzeichen als einzelnes Zeichen
string data = "Ivanov;Petrov;Sidorov";
string[] names = data.Split(';'); // nach Zeichen ';'

// Oder, wenn das Trennzeichen ein ganzer String ist:
string log = "2024-01-01::Fehler::Aufgabe konnte nicht ausgeführt werden";
string[] separators = { "::" };
string[] parts = log.Split(separators);

4. Methode Join: String-Array wieder zusammenbauen

Die Methode Join macht das Gegenteil: Sie nimmt ein Array von Strings und klebt sie zu einem String zusammen, wobei zwischen den Elementen das von dir gewählte Trennzeichen eingefügt wird.

string result = string.Join(separator, arrayOfStrings);
Syntax der Methode Join
  • separator — String, der zwischen die Elemente eingefügt wird.
  • arrayOfStrings — Array oder Collection von Strings (string[], List<string> usw.).

Das einfachste Beispiel

Wir machen aus einem Array von Strings einen String mit Kommas:

string[] items = { "apfel", "birne", "orange", "banane" };
string joined = string.Join(", ", items);
Console.WriteLine(joined); // "apfel, birne, orange, banane"
Zusammenfügen eines String-Arrays mit Join

Join mit leerem Trennzeichen – Strings einfach zusammenkleben

Manchmal willst du einfach nur die Strings aneinanderhängen, ohne etwas dazwischen:

string[] parts = { "Ich", "liebe", "C#" };
string message = string.Join("", parts);
Console.WriteLine(message); // "IchliebeC#"
Strings ohne Trennzeichen zusammenfügen

5. Typische Fehler

Sehr oft vergessen Anfänger, nach dem Splitten eines Strings mit Split die überflüssigen Leerzeichen zu entfernen. Wenn der User zum Beispiel "apfel, birne ,banane" eingibt, bekommst du nach Split Elemente wie " birne ". Wenn du das direkt in Zahlen umwandelst oder vergleichst, gibt's Bugs. Benutze Trim() nach Split für jedes Element – das ist eine gute Angewohnheit.

Zweiter Punkt – überflüssige leere Strings. Wenn der User zwei Trennzeichen hintereinander eingibt oder den String mit einem Trennzeichen beginnt oder beendet, kann Split leere Elemente zurückgeben. Nutze StringSplitOptions.RemoveEmptyEntries, damit du später keine Fehler bekommst.

Wenn das Array für Join leere Elemente oder null enthält, ignoriert Join sie einfach. Aber falls du das nicht willst (zum Beispiel, weil du im Report zeigen willst, dass manche Werte fehlen), musst du das Array vorher selbst bearbeiten.

Und noch was: Split verändert nie den Ursprungsstring, sondern gibt ein neues Array zurück. Join verändert auch nicht das Ursprungsarray, sondern gibt einen neuen String zurück. Merke: Strings und Arrays in C# sind immutable (unveränderlich).

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION