Wie erhält man die Länge eines String
? Zum Beispiel habe ich eine variable definiert wie:
var test1: String = "Scott"
Ich kann jedoch keine Längenmethode für den String finden.
Wie erhält man die Länge eines String
? Zum Beispiel habe ich eine variable definiert wie:
var test1: String = "Scott"
Ich kann jedoch keine Längenmethode für den String finden.
Ab Swift 4+
Es ist einfach:
test1.count
aus Gründen.
(Danke an Martin R)
Ab Swift 2:
Mit Swift 2 hat Apple globale Funktionen zu Protokollerweiterungen geändert, Erweiterungen, die zu einem Protokoll konformen Typ passen. Daher lautet die neue Syntax:
test1.characters.count
(Danke an JohnDifool für den Hinweis)
Ab Swift 1
Verwenden Sie die Methode count characters:
let unusualMenagerie = "Koala
Für Swift 2.0 und 3.0, verwenden Sie test1.characters.count
. Es gibt jedoch ein paar Dinge, die Sie wissen sollten. Also lesen Sie weiter.
Vor Swift 2.0 war count
eine globale Funktion. Ab Swift 2.0 kann es als Elementfunktion aufgerufen werden.
test1.characters.count
Es gibt die tatsächliche Anzahl von Unicode-Zeichen in einem String
zurück, daher ist es die korrekteste Alternative, in dem Sinne, dass Sie bei Ausdruck des Strings und manuellem Zählen der Zeichen zum gleichen Ergebnis kommen würden.
Da jedoch die Art und Weise, wie Strings
in Swift implementiert sind, Zeichen nicht immer den gleichen Speicherplatz einnehmen, sollten Sie darauf achten, dass sich dieses Verhalten deutlich von den üblichen Methoden zur Zeichenzählung in anderen Sprachen unterscheidet.
Zum Beispiel können Sie auch test1.utf16.count
verwenden
Aber wie unten erwähnt, ist der zurückgegebene Wert nicht garantiert der gleiche wie der Aufruf von count
auf characters
.
Aus der Sprachreferenz:
Erweiterte Graphem-Cluster können aus einem oder mehreren Unicode-Skalaren bestehen. Das bedeutet, dass verschiedene Zeichen - und verschiedene Darstellungen desselben Zeichens - unterschiedliche Speichermengen zum Speichern benötigen. Daraus ergibt sich, dass Zeichen in Swift nicht alle den gleichen Speicherplatz innerhalb der String-Repräsentation einnehmen. Als Folge davon kann die Anzahl der Zeichen in einem String nicht berechnet werden, ohne über den String zu iterieren, um seine erweiterten Graphem-Cluster-Grenzen zu bestimmen. Wenn Sie mit besonders langen Zeichenfolgen arbeiten, sollten Sie sich bewusst sein, dass die Eigenschaft characters über die Unicode-Skalare in der gesamten Zeichenfolge iterieren muss, um die Zeichen für diese Zeichenfolge zu bestimmen.
Die Anzahl der Zeichen, die von der characters-Eigenschaft zurückgegeben werden, ist nicht immer dieselbe wie die Längeseigenschaft eines NSString, der dieselben Zeichen enthält. Die Länge eines NSString basiert auf der Anzahl der 16-Bit-Codeeinheiten innerhalb der UTF-16-Repräsentation der Zeichenfolge und nicht auf der Anzahl der Unicode-erweiterten Graphem-Cluster innerhalb der Zeichenfolge.
Ein Beispiel, das die oben beschriebene Situation perfekt veranschaulicht, ist das Überprüfen der Länge einer Zeichenfolge, die ein einzelnes Emoji-Zeichen enthält, wie von n00neimp0rtant in den Kommentaren erwähnt.
var emoji = ""
emoji.characters.count // gibt 1 zurück
emoji.utf16.count // gibt 2 zurück
Swift 1.2 Update: Es gibt keine countElements mehr, um die Größe von Sammlungen zu zählen. Verwenden Sie einfach die count-Funktion als Ersatz: count("Swift")
Swift 2.0, 3.0 und 3.1:
let strLength = string.characters.count
Swift 4.2 (ab 4.0): [Apple-Dokumentation - Strings]
let strLength = string.count
Swift 1.1
extension String {
var length: Int { return countElements(self) } //
}
Swift 1.2
extension String {
var length: Int { return count(self) } //
}
Swift 2.0
extension String {
var length: Int { return characters.count } //
}
Swift 4.2
extension String {
var length: Int { return self.count }
}
let str = "Hello"
let count = str.length // returns 5 (Int)
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.