2016-09-15 25 views
8

में रेंज गिनती की गणना करें स्विफ्ट 3 से पहले स्पष्ट रूप से, Range<String.Index> में count संपत्ति थी। स्विफ्ट 3 में माइग्रेट करते समय मैंने देखा कि यह count संपत्ति अब चली गई है। मैं स्विफ्ट 3 में 2 String.Index es के बीच की दूरी की गणना कैसे करूं?स्विफ्ट 3

उत्तर

12

स्विफ्ट 3 के रूप में, सभी इंडेक्स गणना संग्रह द्वारा ही की जाती है, स्विफ्ट विकास पर SE-0065 – A New Model for Collections and Indices की तुलना करें।

उदाहरण:

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) 

साथ समान परिणाम मिल, तार संग्रह (फिर) कर रहे हैं।