Programmieren mit Swift - Für macOS und iOS
Programmieren mit Swift - Für macOS und iOS
Strings in Swift 2.0

Der Umgang mit Zeichenketten wurde von Apple in der Version 2.0 ihrer Programmiersprachen stark verändert. Der Typ String verfügt jetzt über eine Eigenschaft mit dem Namen characters, die Zugriff auf Werte ermöglicht, für die bisher globale Funktionen verwendet wurden.
Möchte man wissen, aus wie vielen Zeichen sich ein Text zusammensetzt, war das bisher eine Aufgabe für die count-Funktion, die in Swift 1.0 sogar noch countElements heiss.
var charCount:Int = count(fullName)
In Swift 2.0 funktioniert die count-Funktion so nicht mehr. Die Anzahl der Zeichen ist jetzt eine Eigenschaft der characters des String.
var charCount = fullName.characters.count
Enthält ein Text keine, also 0 Zeichen, ist er leer, doch um das zu ermitteln, musste man schon in der Vergangenheit count bemühen. Die Funktion isEmpty gab mit einem booleschen Wert Auskunft darüber, ob die Zeichenkette Zeichen enthielt oder nicht.
var empty:Bool = isEmpty(fullName)
Die Funktion isEmpty ist inzwischen nicht mehr verfügbar. Ersatz schafft die Eigenschaft isEmpty des Typen String.
var empty:Bool = fullName.isEmpty
Konnte man bisher die Funktion indices verwenden, um eine NSRange über alle Zeichen der Zeichenkette zu erhalten, so ist das mit Swift 2.0 nicht mehr möglich. Die Anweisung
var myRange = indices(myProfession)
wird zu
var myRange = myProfession.characters.indices
Mit den Funktionen prefix und suffix konnten bisher leicht eine vorgegebene Anzahl von Zeichen am Anfang oder aber Ende einer Zeichenkette ausgeschnitten werden, doch diese beiden Funktionen gibt es ebenfalls nicht mehr.
// Die ersten acht Zeichen
var pre = prefix(demoText, 8)
// Die letzten sieben Zeichen
var sub = suffix(demoText, 7)
Gleiches erreicht man aber mit Anweisungen, die ganz anders aussehen:
 // Die ersten acht Zeichen
var pre = String(prefix(demoText.characters, 8))
// Die letzten sieben Zeichen
var sub = String(suffix(demoText.characters, 7))
Wird nur das erste oder das letzte Zeichen aus einem Text benötigt, konnte man auf die zuverlässigen Funktionen first und last zurückgreifen, die in der Anwendung sehr einfach waren.
var firstChar:Character? = first(xylophon)
var lastChar:Character? = last(xylophon)
Ersatz für die Funktionen sind in Swift 2.0 ebenfalls Eigenschaften der characters
var firstChar:Character? = xylophon.characters.first
var lastChar:Character? = xylophon.characters.last
Soll bei einem Text das erste oder das letzte Zeichen entfernt werden, war das eine Aufgabe für die Funktionen dropFirst und dropLast, die es auch nicht mehr gibt.
// Das erste Zeichen entfernen
var firstDroped = dropFirst(xylophon)
// Das letzte Zeichen entfernen
var lastDroped = dropLast(xylophon)
Um dasselbe Resultat zu erreichenm ist jetzt eine andere Vorgehensweise nötig:
// Das erste Zeichen entfernen
var firstDroped = String(dropFirst(xylophon.characters))
// Das letzte Zeichen entfernen
var lastDroped = String(dropLast(xylophon.characters))