Eine Zeichenkette stellt Textdaten dar.
In Swift ist ein String eine geordnete Sammlung von Character-Werten, wobei jedes Zeichen ein Unicode-Zeichen darstellt.
Du erstellst eine Zeichenkette mit einem String-Literal, also einer Folge von Zeichen, die von doppelten Anführungszeichen (") umschlossen ist.
Für mehrzeilige Zeichenketten verwendest du drei doppelte Anführungszeichen ("""):
let hello: String = "Hello, World!"
let poem: String = """
Roses are red,
Violets are blue.
Sugar is sweet,
And so are you.
"""
Zeichenketten in Swift lassen sich nahtlos mit der Klasse NSString des Foundation-Frameworks verbinden und bieten so Zugriff auf umfangreiche Möglichkeiten der Textverarbeitung.
Ein Character stellt einen einzelnen erweiterten Graphemcluster dar, also ein für Menschen lesbares Zeichen, das aus einem oder mehreren Unicode-Skalarwerten besteht.
Ein Unicode-Skalarwert ist ein 21-Bit-Codepunkt im Bereich von U+0000 bis einschließlich U+D7FF oder von U+E000 bis einschließlich U+10FFFF.
let aChar: Character = "A"
Wenn du ein String-Literal schreibst, leitet Swift automatisch den Typ String ab.
Um ein einzelnes Zeichen als Character zu speichern, musst du eine explizite Typannotation angeben:
let aString = "A" // Inferred as String
let aChar: Character = "A" // Explicitly typed as Character
print(type(of: aString)) // Prints String
print(type(of: aChar)) // Prints Character
// The following code will not compile:
let badChar: Character = "Too many characters"
// Error: Cannot convert value of type 'String' to specified type 'Character'
Du kannst Zeichenketten mit dem Additionsoperator (+) aneinanderfügen:
print("honey" + "comb")
// Prints "honeycomb"
Du kannst ein Character nicht direkt mit + an einen String verketten, ohne das Zeichen zuvor in eine Zeichenkette umzuwandeln.
Du kannst jedoch die Methode append(_:) verwenden, um entweder eine Zeichenkette oder ein Zeichen direkt an eine veränderbare Zeichenkette anzuhängen:
var greeting = "Hello"
let world = ", world"
let period: Character = "."
greeting.append(world)
print(greeting) // Prints "Hello, world"
greeting.append(period)
print(greeting) // Prints "Hello, world."
Mit der String-Interpolation kannst du eine Zeichenkette aufbauen, indem du Konstanten, Variablen, Literale und Ausdrücke in String-Literale einbettest.
Setze jeden Ausdruck in runde Klammern und stelle einen Backslash davor (\( ... )):
let radius = 5.0
let circle = "The area of a circle with radius \(radius) is \(Double.pi * radius * radius)"
print(circle) // Prints "The area of a circle with radius 5.0 is 78.53981633974483"
Zeichenketten und Zeichen bieten mehrere Eigenschaften, mit denen du ihren Inhalt untersuchen kannst.
Häufige Eigenschaften von Zeichenketten sind:
| Eigenschaft | Beschreibung | Beispiel |
|---|---|---|
isEmpty |
Gibt true zurück, wenn die Zeichenkette keine Zeichen enthält |
"Hello".isEmpty ergibt false
|
count |
Gibt die Anzahl der Zeichen in der Zeichenkette zurück |
"Hello".count ergibt 5
|
Eine vollständige Liste der Eigenschaften findest du in der Apple-Dokumentation zu String.
Häufige Eigenschaften von Zeichen sind:
| Eigenschaft | Beschreibung | Beispiel |
|---|---|---|
isLowercase |
Gibt true zurück, wenn das Zeichen ein Kleinbuchstabe ist |
"a".isLowercase ergibt true
|
isUppercase |
Gibt true zurück, wenn das Zeichen ein Großbuchstabe ist |
"A".isUppercase ergibt true
|
isNumber |
Gibt true zurück, wenn das Zeichen eine Ziffer ist |
"1".isNumber ergibt true
|
isWhitespace |
Gibt true zurück, wenn das Zeichen Leerraum ist |
" ".isWhitespace ergibt true
|
Eine vollständige Liste der Eigenschaften findest du in der Apple-Dokumentation zu Character.
Du kannst andere Typen in Zeichenketten umwandeln, indem du den Initialisierer String(_:) verwendest. Er unterstützt Standardtypen wie Int, Double und Character:
let charX: Character = "x"
print(String(charX)) // Prints "x"
print(String(110)) // Prints "110"
print(String(Double.pi)) // Prints "3.141592653589793"
String-Literale in Swift unterstützen mehrere Escape-Sequenzen für Sonderzeichen:
| Sequenz | Beschreibung |
|---|---|
\0 |
Nullzeichen |
\\ |
Backslash |
\t |
Horizontaler Tabulator |
\n |
Zeilenvorschub (Newline) |
\r |
Wagenrücklauf |
\' |
Einfaches Anführungszeichen |
\" |
Doppeltes Anführungszeichen |
\u{n} |
Beliebiger Unicode-Skalarwert (hexadezimal) |
let quote: String = "\"Hello\", he said."
print(quote) // Prints "Hello", he said.
let unicode: Character = "\u{1F496}"
print(unicode) // Prints 💖
In dieser Übung schreibst du Code, der einem Schilderunternehmen dabei hilft, individuelle Nachrichten für seine Schilder zu erstellen.
Definiere die folgenden konstanten Strings, die zum Erstellen von Schildern verwendet werden:
birthday: Enthält den Wert „Birthday“valentine: Enthält den Wert „Valentine's Day“anniversary: Enthält den String „Anniversary“Definiere die folgenden konstanten Zeichen, die zum Erstellen von Schildern verwendet werden:
space: Enthält den Wert „ “ (ein einzelnes Leerzeichen)exclamation: Enthält den Wert „!“Implementiere die Funktion buildSign(for:name:). Sie nimmt das Argument for entgegen, das einen der drei Strings enthält, die du in der ersten Aufgabe definiert hast, und das Argument name, einen String mit dem Namen der Person, für die das Schild bestimmt ist.
Verwende Konkatenation, um die Nachricht für das Schild zusammenzusetzen, und denk daran, die bereits definierten Konstanten wiederzuverwenden.
Die Funktion soll die Nachricht des Schilds als String zurückgeben.
buildSign(for: birthday, name: "Otto")
// returns "Happy Birthday Otto!"
buildSign(for: anniversary, name: "Valentina")
// returns "Happy Anniversary Valentina!"
Implementiere die Funktion graduationFor(name:year:). Sie nimmt das Argument name entgegen, einen String mit dem Namen der Person, für die das Schild bestimmt ist, und das Argument year, eine Ganzzahl mit dem Jahr, in dem die Person ihren Abschluss macht.
Verwende Template-Strings, um die Nachricht für das Schild aufzubauen.
Die Funktion soll die Nachricht des Schilds als String zurückgeben.
graduationFor(name: "Padma", year: 2023)
// returns "Congratulations Padma!\nClass of 2023"
Implementiere die Funktion costOf(sign:). Sie nimmt das Argument sign entgegen, einen String mit der Nachricht für das Schild.
Das Schild hat einen Grundpreis von 20 in der gegebenen Währung. Zusätzlich kostet jeder Buchstabe 2 (Leerzeichen werden in die Berechnung einbezogen).
Die Funktion soll die Kosten des Schilds als Ganzzahl zurückgeben.
costOf(sign: "Happy Birthday Grandma!")
// returns 66
Melde dich bei Exercism an, um Swift mit 35 Konzepte116 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.