Swift: Zeichen in einer Zeichenkette ersetzen – vollständige Anleitung für Anfänger

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Swift: Wie ersetzt man Zeichen in einer Zeichenkette? Vollständige Anleitung für Anfänger

\n\n

Früher oder später steht jeder Swift-Entwickler vor der Aufgabe: Man muss bestimmte Zeichen in einer Zeichenkette durch andere ersetzen. Das klingt einfach, oder? Aber Anfänger sind oft verwirrt, weil Swift String kein Array von Zeichen wie in C ist, sondern eine komplexe Unicode-kompatible Struktur. In diesem Artikel behandeln wir die gängigsten und effektivsten Methoden zum Ersetzen von Zeichen in Swift – von einfach bis fortgeschritten.

\n\n

Wir werden Methoden nicht nur trocken auflisten. Stattdessen sehen wir uns reale Beispiele an, die Ihnen in der Praxis begegnen: vom Ersetzen von Leerzeichen bis zum Entfernen von Satzzeichen und der Arbeit mit Emojis. Los geht's!

\n\n

Warum ist Swift String kein einfaches Array von Zeichen?

\n

Bevor wir Zeichen ersetzen, ist es wichtig zu verstehen, wie eine Zeichenkette in Swift aufgebaut ist. String ist eine Sammlung von Character, aber jeder Character kann aus mehreren Unicode-Skalaren bestehen (z. B. Emoji 🚀 oder der Buchstabe „é“ mit Diakritika). Daher funktioniert die Indizierung mit Int hier nicht direkt. Stattdessen verwendet Swift String.Index.

\n\n

Zum Ersetzen von Zeichen müssen Sie sich jedoch nicht in die Tiefen der Indizes begeben – es gibt fertige High-Level-Methoden. Schauen wir uns die beliebtesten an.

\n\n

Methode Nr. 1: replacingOccurrences – der König des Ersetzens

\n

Der einfachste und offensichtlichste Weg ist die Verwendung der Methode replacingOccurrences(of:with:). Sie gibt eine neue Zeichenkette mit ersetzten Vorkommen zurück. Die ursprüngliche Zeichenkette bleibt unverändert (Swift ist eine Sprache mit standardmäßig unveränderlichen Zeichenketten).

\n\n
let original = "Hallo, Welt!"\nlet replaced = original.replacingOccurrences(of: "Welt", with: "Swift")\nprint(replaced) // "Hallo, Swift!"\nprint(original) // "Hallo, Welt!" – das Original bleibt unverändert
\n\n

Diese Methode ist ideal für einfache Fälle: Ersetzen eines Wortes, Zeichens oder einer Teilzeichenkette. Aber was ist, wenn mehrere verschiedene Zeichen ersetzt werden müssen? Zum Beispiel alle Leerzeichen und Punkte entfernen?

\n\n

Verkettung von Aufrufen für mehrere Ersetzungen

\n

Sie können replacingOccurrences mehrmals hintereinander aufrufen:

\n\n
let text = "Hallo, Welt! Wie geht es dir?"\nlet cleaned = text\n    .replacingOccurrences(of: ",", with: "")\n    .replacingOccurrences(of: "!", with: "")\n    .replacingOccurrences(of: " ", with: "_")\nprint(cleaned) // "Hallo_Welt_Wie_geht_es_dir?"
\n\n

Nachteil: Bei vielen Ersetzungen wird der Code unübersichtlich. Für solche Fälle eignen sich andere Methoden oder reguläre Ausdrücke besser.

\n\n

Methode Nr. 2: Ersetzen mit map und filter (funktionaler Ansatz)

\n

Swift ist nicht nur OOP, sondern auch funktionale Programmierung. Sie können mit map jedes Zeichen einer Zeichenkette durchgehen und es nach Bedingung ersetzen. Das ist besonders praktisch, wenn Sie alle Vorkommen einer bestimmten Zeichengruppe ersetzen möchten.

\n\n
let input = "a1b2c3d4"\nlet result = input.map { char -> Character in\n    if char.isNumber {\n        return "X"\n    } else {\n        return char\n    }\n}\nprint(String(result)) // "aXbXcXdX"
\n\n

Hier haben wir alle Ziffern durch "X" ersetzt. Und wenn Sie Zeichen entfernen möchten? Verwenden Sie filter:

\n\n
let withPunctuation = "Hallo!!! Wie geht es dir??"\nlet noPunctuation = withPunctuation.filter { !$0.isPunctuation }\nprint(noPunctuation) // "Hallo Wie geht es dir"
\n\n

Dieser Ansatz ist sehr flexibel: Sie können beliebige Prüfungen verwenden – isNumber, isLetter, isWhitespace oder sogar den Vergleich mit einer Zeichengruppe.

\n\n

Methode Nr. 3: Reguläre Ausdrücke (NSRegularExpression)

\n

Wenn die Aufgabe komplexer wird (Ersetzen nach Muster, Entfernen aller E-Mails, Ersetzen von Daten), kommt man um reguläre Ausdrücke nicht herum. Swift unterstützt NSRegularExpression aus Foundation.

\n\n
import Foundation\n\nlet text = "Meine E-Mail ist test@example.com und Ihre ist user@test.org"\nlet regex = try! NSRegularExpression                

Blogs

Buchempfehlungen