Menu
Coddy logo textTech

Teilen und Zusammenfügen

Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy — Lektion 4 von 56.

Zwei alltägliche Werkzeuge für die Arbeit mit Text mit Trennzeichen. Beide stammen aus Foundation, das bereits importiert ist.

components(separatedBy:) zerlegt einen String in ein Array von Strings anhand des von Ihnen übergebenen Trennzeichens:

let csv = "red,green,blue"
let parts = csv.components(separatedBy: ",")
print(parts)                       // ["red", "green", "blue"]

Das Gegenstück ist joined(separator:) bei jedem [String]:

let words = ["swift", "is", "fun"]
let line = words.joined(separator: " ")
print(line)                        // "swift is fun"

Man wird sie oft kombinieren: aufteilen, mit map transformieren, wieder zusammenfügen. Das Ergebnis von map auf einem [String] ist immer noch ein [String], daher funktioniert joined direkt.

challenge icon

Aufgabe

Einfach

Lies eine einzelne Eingabezeile: eine durch Kommas getrennte Liste von Wörtern.

Gib drei Zeilen aus:

  1. Die Anzahl der Wörter nach dem Aufteilen bei ,
  2. Die Wörter, wieder zusammengefügt mit > (Leerzeichen, Größer-als-Zeichen, Leerzeichen), in Großbuchstaben
  3. Das längste Wort aus der Liste (nach dem Aufteilen). Wenn zwei Wörter gleich lang sind, verwende dasjenige, das zuerst erscheint.

Für die Eingabe red,green,blue lautet die Ausgabe:

3
RED > GREEN > BLUE
green

Spickzettel

Teilen Sie einen String in ein Array auf, indem Sie components(separatedBy:) verwenden:

let parts = "red,green,blue".components(separatedBy: ",")
// ["red", "green", "blue"]

Fügen Sie ein Array von Strings wieder zusammen, indem Sie joined(separator:) verwenden:

let line = ["swift", "is", "fun"].joined(separator: " ")
// "swift is fun"

Häufiges Muster — Aufteilen, Transformieren mit map, wieder Zusammenfügen:

let result = "red,green,blue"
    .components(separatedBy: ",")
    .map { $0.uppercased() }
    .joined(separator: " > ")
// "RED > GREEN > BLUE"

Probier es selbst

let line = readLine()!
let words = line.components(separatedBy: ",")

// TODO: Anzahl ausgeben, mit " > " verbunden und in Großbuchstaben umgewandelt, erstes längstes Wort
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Kontrollfluss