在Swift 3中计算射程计数
显然在Swift 3之前,在Swift 3中计算射程计数,swift,swift3,Swift,Swift3,显然在Swift 3之前,范围具有计数属性。在迁移到Swift 3时,我注意到这个count属性现在不存在了。如何计算Swift 3中2String.Indexes之间的距离?自Swift 3起,所有索引计算均由集合本身完成, 比较一下快速进化 例如: let string = "abc 1234 def" if let range = string.range(of: "\\d+", options: .regularExpression) {
范围
具有计数
属性。在迁移到Swift 3时,我注意到这个count
属性现在不存在了。如何计算Swift 3中2String.Index
es之间的距离?自Swift 3起,所有索引计算均由集合本身完成,
比较一下快速进化
例如:
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
不是Swift 3中的集合,但它有这些方法
它们也会被转发到字符串CharacterView
。
你会得到同样的结果
let count = string.characters.distance(from: range.lowerBound, to: range.upperBound)
从Swift 4开始,字符串是集合(再次)。这在Swift 5中是否发生了变化或变得更简单?@意义很重要:否。-有一个(据我所知)旨在简化索引/偏移计算的方法,但这仍然是一个问题。