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.
Wenn Sie nur überprüfen möchten, ob ein String leer ist oder nicht (Überprüfung der Länge von 0), bietet Swift eine einfache boolesche Testmethode zu String
myString.isEmpty
Die andere Seite dieser Medaille waren Leute, die in ObjectiveC fragten, wie man überprüfen könne, ob ein String leer ist, wobei die Antwort war, auf eine Länge von 0 zu überprüfen:
tl;dr Wenn Sie die Länge eines Strings in Bezug auf die Anzahl der menschenlesbaren Zeichen erfahren möchten, verwenden Sie countElements(). Wenn Sie die Länge in Bezug auf die Anzahl der erweiterten Graphemcluster wissen möchten, verwenden Sie endIndex. Lesen Sie weiter für Details.
Der String-Typ ist als geordnete Sammlung (d. h. Sequenz) von Unicode-Zeichen implementiert und entspricht dem CollectionType-Protokoll, das dem _CollectionType-Protokoll entspricht, das der Eingabetyp ist, der von countElements() erwartet wird. Daher kann countElements() aufgerufen werden und dabei ein String-Typ übergeben werden, und es wird die Anzahl der Zeichen zurückgegeben.
Allerdings implementiert String auch die berechneten Eigenschaften startIndex und endIndex, die sich auch in CollectionType und damit in _CollectionType befinden, was tatsächlich die Position des Index vor dem ersten Zeichencluster und die Position des Index nach dem letzten Zeichencluster darstellt. So ist in dem String "ABC" die Position des Index vor A 0 und nach C 3. Daher ist endIndex = 3, was auch die Länge des Strings ist.
Kann also endIndex verwendet werden, um die Länge eines beliebigen String-Typs zu erhalten, richtig?
Nun, nicht immer... Unicode-Zeichen sind tatsächlich erweiterte Graphemcluster, die Sequenzen von einem oder mehreren Unicode-Skalaren sind, die kombiniert werden, um ein einzelnes menschenlesbares Zeichen zu erstellen.
let circledStar: Character = "\u{2606}\u{20DD}" //
circledStar ist ein einzelnes Zeichen, das aus U+2606 (einem weißen Stern) und U+20DD (einem kombinierenden umschließenden Kreis) besteht. Lassen Sie uns einen String aus circledStar erstellen und die Ergebnisse von countElements() und endIndex vergleichen.
let circledStarString = "\(circledStar)"
countElements(circledStarString) // 1
circledStarString.endIndex // 2
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.