2016-09-15 19 views
8

Rõ ràng trước Swift 3, một số Range<String.Index> có thuộc tính count. Trong khi chuyển sang Swift 3, tôi nhận thấy rằng thuộc tính count này đã biến mất. Làm cách nào để tính khoảng cách giữa 2 String.Index es trong Swift 3?Tính số đếm trong Swift 3

Trả lời

12

Kể từ Swift 3, tất cả các tính toán chỉ mục được thực hiện bởi chính bộ sưu tập, so sánh SE-0065 – A New Model for Collections and Indices khi phát triển Swift.

Ví dụ:

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 
} 

Trên thực tế, Stringkhông một bộ sưu tập trong Swift 3, nhưng nó có những phương pháp như tốt và họ được chuyển tiếp đến các dây CharacterView. Bạn nhận được kết quả tương tự với

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

Kể từ Swift 4, chuỗi là bộ sưu tập (một lần nữa).