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

Grundlegende Methoden der Klasse string

C# SELF
Level 9, Lektion 3
Verfügbar

1. Einführung

In der Praxis begegnen dir am häufigsten solche Aufgaben mit Strings:

  • Die Länge eines Strings herausfinden (und checken, ob er leer ist).
  • Den Buchstaben-Case ändern (ALLES GROSS oder alles klein machen).
  • Prüfen, ob der String ein gesuchtes Wort oder Zeichen enthält.
  • Ein "schlechtes Wort" durch ein netteres ersetzen.
  • Den String anhand eines Trennzeichens aufteilen ("Telefonliste durch Komma getrennt").
  • Leerzeichen am Anfang und Ende des Strings entfernen.
  • Einen Teil des Strings bekommen (z.B. die ersten 3 Buchstaben vom Nachnamen).
  • Zwei Strings vergleichen – sind sie gleich, wenn man die Groß-/Kleinschreibung ignoriert?

Und für jede dieser Aufgaben hat die string-Klasse ihre eigene Methode.

Tabelle der wichtigsten Methoden

Operation Methode/Eigenschaft Beispiel
Länge des Strings
Length
name.Length
Erstes Zeichen
[0]
name[0]
Letztes Zeichen
[name.Length - 1]
name[name.Length - 1]
Zu Kleinbuchstaben
ToLower()
name.ToLower()
Zu Großbuchstaben
ToUpper()
name.ToUpper()
Prüfen, ob Substring vorhanden
Contains()
name.Contains("Ivan")
Position des Substrings
IndexOf()
name.IndexOf("a")
Teilstring extrahieren
Substring()
name.Substring(1, 3)
Strings vergleichen
Equals(), ==
name.Equals("Peter")
Leerzeichen entfernen
Trim()
name.Trim()
Nach Trennzeichen splitten
Split()
csv.Split(',')
Array zu String verbinden
string.Join()
string.Join("-", array)
Teil ersetzen
Replace()
text.Replace("alt", "neu")
Leerer String?
IsNullOrEmpty()
string.IsNullOrEmpty(name)

Heute schauen wir uns einige davon genauer an.

2. Mit Strings wie mit Arrays arbeiten

Länge des Strings: Eigenschaft Length

Das Einfachste: Wie viele Zeichen hat der String? Dafür nutzen wir die Eigenschaft Length. Beispiel:

string name = "Alex";
Console.WriteLine(name.Length);  // Gibt aus: 7
  • Length ist eine Eigenschaft (kein Methode), also keine Klammern!
  • Wenn der String leer ist (""), ist die Länge 0.

Manchmal ist es praktisch, die Länge zu checken, bevor du mit dem String was "Gefährliches" machst (z.B. einen Teilstring nimmst).

Zeichen per Index bekommen: Indexer [i]

Wie bei Arrays: Ein String ist ein Array von Zeichen. Beispiel:

string hello = "Hello";
char firstChar = hello[0]; 	// 'P'
char lastChar = hello[^1]; 	// 't'
Console.WriteLine(firstChar);
  • Indexierung startet bei null!
  • Sei vorsichtig: Wenn du auf einen nicht existierenden Index zugreifst (hello[100]), gibt's eine Exception.

3. Strings vergleichen

String-Operatoren == und !=

In C# vergleichen diese Operatoren einfach den Inhalt von zwei Strings.

string word1 = "Hello";
string word2 = "Hello";
bool areEqual = word1 == word2; // true

Methode Equals

Im Gegensatz zum Operator == kannst du bei der Methode Equals Parameter übergeben. Zum Beispiel Strings ohne Beachtung der Groß-/Kleinschreibung vergleichen – wenn "Mama" == "mama" und auch gleich "MAMA" ist. Beispiel:

string pass1 = "Qwerty";
string pass2 = "qwerty";

// Standardvergleich mit Beachtung der Groß-/Kleinschreibung
bool isSame = pass1.Equals(pass2); // false

// Vergleich ohne Beachtung der Groß-/Kleinschreibung
bool ignoreCase = pass1.Equals(pass2, StringComparison.OrdinalIgnoreCase); // true

4. Groß-/Kleinschreibung ändern

Um einen String in Groß- (oder Klein-)buchstaben umzuwandeln, gibt's in der string-Klasse zwei spezielle Methoden: ToLower() und ToUpper().

Willst du, dass der User deine Message im "WICHTIG!"-Stil sieht? Oder alle Namen zum Vergleichen in Kleinbuchstaben bringen? Easy:

string text = "Mir Ist Der Graue Wolf Nicht Schlimm!";
Console.WriteLine(text.ToUpper()); // MIR IST DER GRAUE WOLF NICHT SCHLIMM!
Console.WriteLine(text.ToLower()); // mir ist der graue wolf nicht schlimm!
  • Achtung: Der ursprüngliche String ändert sich nicht!
  • Kannst du nutzen, um Strings ohne Beachtung der Groß-/Kleinschreibung zu vergleichen.

5. Überflüssige Leerzeichen entfernen

Und was, wenn der User aus Versehen (oder mit Absicht, wer weiß) Leerzeichen vor oder nach dem Namen eingibt? Trim hilft! Es gibt ihn in drei Varianten:

  • Trim – entfernt alle Leerzeichen am Anfang und Ende des Strings;
  • TrimStart – entfernt Leerzeichen am Anfang;
  • TrimEnd – entfernt Leerzeichen am Ende.
string raw = "   George   ";
string cleaned = raw.Trim(); 		// "George"
Console.WriteLine($"[{cleaned}]");

6. Teilstring bekommen: Substring

Manchmal willst du nur einen Teil aus dem String rausholen.

string word = "Hello";
string part = word.Substring(2);      // "ivet"
string part2 = word.Substring(2, 3);  // "ive"
  • Substring(startIndex) – ab Zeichen startIndex bis zum Ende.
  • Substring(startIndex, length) – ab startIndex so viele Zeichen, wie in length steht.

Achtung: Wenn du über das Ende des Strings hinausgehst oder length < 0 ist, gibt's eine Exception!

7. String auf Leere prüfen

Bevor du einen String benutzt (z.B. in Interpolation), solltest du checken, dass er nicht null ist und nicht leer, sonst gibt's Fehler oder komische Ergebnisse.

a) Prüfung auf null mit dem Operator ==

string s = null;
if (s == null)
    Console.WriteLine("String ist null");

Nachteil: erkennt keinen leeren String ("").

b) Prüfung mit string.IsNullOrEmpty()

Checkt sowohl null als auch leeren String:

string s = "";
if (string.IsNullOrEmpty(s))
    Console.WriteLine("String ist leer oder null");

c) Prüfung mit string.IsNullOrWhiteSpace()

Bezieht auch Strings ein, die nur aus Leerzeichen, Tabs und anderen "unsichtbaren" Zeichen bestehen:

string s = "     ";
if (string.IsNullOrWhiteSpace(s))
    Console.WriteLine("String ist leer, null oder nur aus Leerzeichen");

8. Typische Fehler bei String-Methoden

  • Der häufigste Fehler: Vergessen, dass Strings unveränderlich (immutable) sind, wie wir oben schon gesehen haben.
  • Noch so ein Klassiker: Die Groß-/Kleinschreibung beim Suchen und Vergleichen vergessen.

Zum Beispiel: Wenn der User den Namen "andrew" eingibt, aber in der Liste schon "Andrey" steht, dann klappt ein einfacher Contains oder == vielleicht nicht, wenn du nicht beide Strings auf denselben Case bringst oder die passende Überladung der Methode nutzt.

Sei auch vorsichtig mit Methoden, die Indizes zurückgeben. Indizes starten bei null, und wenn -1 zurückkommt, heißt das: nichts gefunden, nicht "Index 0".

2
Aufgabe
C# SELF, Level 9, Lektion 3
Gesperrt
Zeichenkettenlänge sowie erstes und letztes Zeichen ermitteln
Zeichenkettenlänge sowie erstes und letztes Zeichen ermitteln
2
Aufgabe
C# SELF, Level 9, Lektion 3
Gesperrt
Entfernen von Leerzeichen und Umwandlung in Großbuchstaben
Entfernen von Leerzeichen und Umwandlung in Großbuchstaben
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION