Für Zeichenketten (Strings) gibt es in Swift den Datentyp String
.
let myString: String = "Hello World!"
Die Zeichen werden in doppelte Anführungszeichen gesetzt. Die Angabe des Typs String
ist nicht zwangsläufig erforderlich. Swift versucht dann automatisch den richtigen Datentyp zu ermitteln. Dies wird als type inference bezeichnet.
String und Character
Es handelt sich bei einem String um eine Sammlung von einzelnen Zeichen. Ein Zeichen (Character
) ist ebenfalls ein Datentyp in Swift. Möchte man anstelle eines String-Typs einen Character-Typ deklarieren, muss dies explizit angegeben werden. Einzelne Zeichen werden hierbei ebenfalls in doppelte Anführungszeichen gesetzt.
let myString = "Hello World!" // String
let myCharacter: Character = "A" // Character
Ein String kann aus einem “Character-Array” erzeugt werden:
let myCharacterArray: [Character] = ["w", "o", "r", "d"]
let myString = String(myCharacterArray)
print(myString) // -> "word"
Leere Strings erzeugen
Für die Erzeugung eines leeren Strings existieren in Swift zwei Möglichkeiten. Zum einen kann einfach ein leeres String-Literal verwendet werden:
var myString = ""
Zum anderen kann ein parameterloser String erzeugt werden (initializer syntax):
var myString = String()
Ob ein leerer String vorliegt, kann mit isEmpty
ermittelt werden:
if myString.isEmpty
// do something
}
Länge einer Zeichenkette ermitteln
Es gibt in Swift für den Datentyp String keine length
-Eigenschaft. Soll die Länge einer Zeichenkette ermittelt werden, kann dies mit count
durchgeführt werden.
let myString = "Bochum"
print(myString.count) // -> 6
Strings zusammensetzen
Verschiedene Strings können mit dem +
-Operator oder +=
-Operator zu einem String zusammengesetzt werden:
var myString = "Hello "
myString += "World"
print(myString) // -> Hello World
Im Beispiel ist das Schlüsselwort var
vorangestellt. Wird stattdessen let
verwendet, dann ist die Variable “myString” nicht veränderbar; “myString” wäre dann eine Konstante.
Strings vergleichen
Strings können durch ==
und !=
miteinander verglichen werden.
var firstString = "Hello World"
var secondString = "Hello World"
var comparison = (firstString == secondString) // -> true
Das Vergleichen mit dem Vergleichsoperator ==
ist möglich, da in Swift Strings als Struktur (struct) implementiert sind. Es handelt es also bei einem String um einen Wertetyp (value type).
String Interpolation
In Swift können Werte auf einfache Weise in Strings umgewandelt werden:
var age = 32
print("Sein Alter beträgt \(age) Jahre.")
// -> Sein Alter beträgt 32 Jahre.
Dieser Vorgang wird als Interpolation bezeichnet. Darunter versteht man die Erzeugung eines (neuen) Strings aus Variablen oder Konstanten, indem deren Werte in ein String-Literal eingefügt werden. Im obigen Beispiel wurde die Variable age
in so ein Literal integriert. Die Variable muss dabei in Klammern einem Backslash folgen, hier also \(age)
.
Formatierte Strings
So einfach die Umwandlung in eine Zeichenkette mit der String Interpolation auch ist, es gibt Fälle, in denen man sich mehr Einfluss auf das Ausgabeformat wünscht. Hier helfen format strings weiter. Anstelle von
var weight = 86.17
print("\(weight)")
könnte man auch
let output = String(format: "%.1f", weight)
// -> 86.2
schreiben.
In dem Code wird an die Stelle des durch ein %-Zeichen gekennzeichneten Platzhalters der (formatierte) Wert der Variablen weight
eingesetzt.
Platzhalter beginnen immer mit einem Prozentzeichen, gefolgt von der Angabe des Typs:
- %f steht für eine Dezimalzahl
- %d steht für Werte vom Typ Integer
- %@ steht für Objekte
Im obigen Beispiel wird %.1f verwendet, also ein Dezimalzahl-Platzhalter, wobei die 1 kennzeichnet, dass nur eine Nachkommastelle angezeigt werden soll.
Iteration
Über die einzelnen Zeichen eines Strings kann mit einer for
-Schleife iteriert werden:
let name = "Marcus"
for char in name {
print("\(char)")
}
Diese Schleife gibt alle Buchstaben des Namens “Marcus” aus.
Zuletzt aktualisiert am 12. Mai 2021