2016-09-15 9 views
8

Podobno przed Swift 3, Range<String.Index> miał właściwość count. Podczas migracji do Swift 3 zauważyłem, że ten count właściwość jest teraz zniknął. W jaki sposób obliczyć odległość między 2 String.Index es w Swift 3?Oblicz range liczyć w Swift 3

Odpowiedz

12

Od Swift 3 wszystkie obliczenia indeksu wykonuje sama kolekcja, porównaj SE-0065 – A New Model for Collections and Indices w ewolucji Swift.

przykład:

let string = "abc 1234 def" 
if let range = string.range(of: "\\d+", options: .regularExpression) { 
    let count = string.distance(from: range.lowerBound, to: range.upperBound) 
    print(count) // 4 
} 

Właściwie String jest nie zbiór Swift 3, lecz ma te same metody, jak również i są przekazywane do strun CharacterView. uzyskać ten sam rezultat z

let count = string.characters.distance(from: range.lowerBound, to: range.upperBound) 

Od Swift 4, łańcuchy są kolekcje (ponownie).