通过Swift算法,包括蛮力字符串搜索,即https://github.com/raywenderlich/swift-algorithm-club/tree/master/Brute-Force%20String%20Search
据说输出为7
现在实际上输出是(String.Index?)-尽管我可以下标,但我想实际看到值-7。
代码是
extension String {
func indexOf(_ pattern: String) -> String.Index? {
for i in self.characters.indices {
var j = i
var found = true
for p in pattern.characters.indices{
if j == self.characters.endIndex || self[j] != pattern[p] {
found = false
break
} else {
j = self.characters.index(after: j)
}
}
if found {
return i
}
}
return nil
}
}
我已经看过将String.Index转换为文档中的范围,并且在这里:Convert String.Index to Int or Range<String.Index> to NSRange,但是该问题的答案是旧的,并且不提供Swift 4的答案(如果存在这样的答案)。
距离to也不起作用,
let s = "Hello, World"
let res = ( s.indexOf("World") )
let index: Int = s.startIndex.distance(to: res)
print (s[res!])
并且现有的OffsetIndexableCollection甚至无法编译
那我怎么转换
s.indexOf("World")
到“ 7”,其中s是“ Hello,World”
答案 0 :(得分:1)
尝试一下:
s.indexOf("World").encodedOffset ?? -1