【发布时间】:2017-09-27 21:58:14
【问题描述】:
我需要一种快速的方法来查找可能出现在字符串中的搜索词的所有索引。我尝试了这种“蛮力”String 扩展方法:
// Note: makes use of ExSwift
extension String
{
var length: Int { return count(self) }
func indicesOf(searchTerm:String) -> [Int] {
var indices = [Int]()
for i in 0 ..< self.length {
let segment = self[i ... (i + searchTerm.length - 1)]
if (segment == searchTerm) {
indices.append(i)
}
}
return indices;
}
}
...但它的速度非常慢,尤其是搜索词越短。快速找到所有索引的更好方法是什么?
【问题讨论】:
-
您使用的是哪个 Xcode 版本?您的代码无法在 Xcode 6.3.2 或 Xcode 7 beta 中编译。
-
Xcode 6.3.2。也许您缺少 String.length?
var length: Int { return count(self) } -
String 在我的 Xcode 6.3.2 中没有属性长度(而且你不能用整数为字符串下标)。也许您正在使用一些扩展?
-
我更新了代码以使其有意义。
-
哦,对了,下标……我用的是 ExSwift。