2016-09-15 11 views
8

スウィフト3の前に明らかに、Range<String.Index>countの特性を持っていました。 Swift 3に移行中、私はこのcountプロパティがなくなったことに気付きました。 Swift 3の2 String.Indexの距離をどのように計算すればよいですか?スウィフト3の範囲カウントを計算する

答えて

12

スウィフト3では、すべてのインデックス計算はコレクション自体によって行われ、 はSE-0065 – A New Model for Collections and IndicesとSwift進化を比較します。

例:

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 
} 

実は、Stringはスウィフト3でないコレクションですが、それは同様にそれらのメソッド を持っており、それらは文字列CharacterViewに転送されます。あなたはスウィフト4のよう

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

と同じ結果を得る 、文字列は(再び)のコレクションです。

関連する問題