Einleitung: Warum das Aufteilen von Strings eine Grundlage ist, die jeder Swift-Entwickler kennen muss
\n\nStellen Sie sich folgende Situation vor: Sie parsen eine CSV-Datei, verarbeiten Benutzereingaben aus einem Textfeld oder analysieren einen JSON-ähnlichen String. Was tun Sie? Richtig — Sie teilen den String in ein Array auf. Die Frage "Split a String into an array in Swift?" auf Stack Overflow hat über 20.000 Aufrufe und ist eine der beliebtesten unter angehenden iOS-Entwicklern. Warum? Weil man ohne diese Fähigkeit kein ernsthaftes Projekt in Swift schreiben kann.
\n\nIn diesem Artikel behandeln wir alle möglichen Methoden, um einen String in Swift in ein Array aufzuteilen: von der klassischen components(separatedBy:) bis zur modernen split(separator:) und cleveren Tricks mit regulären Ausdrücken. Sie erfahren, welche Methode Sie je nach Aufgabe wählen sollten, und erhalten fertige Codebeispiele, die Sie sofort in Ihr Xcode-Projekt einfügen können.
1. Die klassische Methode: components(separatedBy:)
\n\nDiese Methode stammt aus Objective-C und wird bis heute aktiv genutzt. Sie ist einfach, verständlich und funktioniert wie ein Schweizer Uhrwerk. components(separatedBy:) gibt ein Array von Strings [String] zurück, die durch das angegebene Trennzeichen getrennt sind.
import Foundation\n\nlet text = "Apfel,Banane,Orange,Kiwi"\nlet fruits = text.components(separatedBy: ",")\nprint(fruits) // ["Apfel", "Banane", "Orange", "Kiwi"]\n\nWichtige Nuancen der Methode components(separatedBy:):
\n- \n
- Trennzeichen ist ein String. Sie können jeden beliebigen
Stringübergeben, auch mit mehreren Zeichen:"::"," - ". \n - Leere Elemente bleiben erhalten. Wenn zwischen Trennzeichen nichts steht, erscheint im Array ein leerer String. \n
- Erfordert import Foundation. Ohne Import ist die Methode nicht verfügbar. \n
let data = "a,,b,c"\nlet parts = data.components(separatedBy: ",")\nprint(parts) // ["a", "", "b", "c"]\n\nDiese Methode ist ideal, wenn Sie einfach und schnell einen String in Swift in ein Array aufteilen möchten, ohne unnötige Komplikationen. Aber denken Sie daran: Sie entfernt leere Teilstrings nicht automatisch.
\n\n2. Die moderne Methode: split(separator:maxSplits:omittingEmptySubsequences:)
\n\nSeit Swift 2.0 haben wir die native Methode split(). Sie ist flexibler und "swiftiger". Im Gegensatz zu components gibt split ein Array von Substring zurück, nicht von String. Dies dient der Leistungsoptimierung — Teilstrings verweisen auf den Speicher des ursprünglichen Strings.
let sentence = "Der schnelle braune Fuchs springt über den faulen Hund"\nlet words = sentence.split(separator: " ")\nprint(words) // ["Der", "schnelle", "braune", "Fuchs", "springt", "über", "den", "faulen", "Hund"]\n\nParameter der split-Methode:
\n- \n
separator— Trennzeichen (Character). \n maxSplits— maximale Anzahl von Teilungen (Standard:Int.max). \n omittingEmptySubsequences— ob leere Teilstrings entfernt werden sollen (Standard:true). \n
let csvLine = "1,2,,4,5"\nlet withEmpties = csvLine.split(separator: ",", omittingEmptySubsequences: false)\nprint(withEmpties) // ["1", "2", "", "4", "5"]\n\nlet withoutEmpties = csvLine.split(separator: ",", omittingEmptySubsequences: true)\nprint(withoutEmpties) // ["1", "2", "4", "5"]\n\nWenn Sie einen String in Swift in ein Array von Substring aufteilen und die Kontrolle über leere Elemente haben möchten, wählen Sie split. Um [String] zu erhalten, fügen Sie einfach .map(String.init) hinzu.
let result: [String] = "a,b,c".split(separator: ",").map(String.init)\nprint(result) // ["a", "b", "c"]\n\n