838 Stimmen

Holen Sie sich die Länge eines Strings

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.

1368voto

mginn Punkte 16045

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 

346voto

Cezar Punkte 54048

Zusammenfassung:

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.

Zählen von Zeichen in Swift

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

97voto

San Punkte 1776

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

65voto

whitneyland Punkte 10275

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)

52voto

Vyacheslav Punkte 24813

Swift 4

"string".count

;)

Swift 3

extension String {
    var length: Int {
        return self.characters.count
    }
}

usage

"string".length

CodeJaeger.com

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.

Powered by:

X