我有这个函数可以在特定单词处返回(并寻找)一个 FileHandle 指针:
func getFilePointerIndex(atWord word: String, inFile file: FileHandle) -> UInt64? {
let offset = file.offsetInFile
if let str = String(data: file.readDataToEndOfFile(), encoding: .utf8) {
if let range = str.range(of: word) {
let intIndex = str.distance(from: str.startIndex, to: range.lowerBound)
file.seek(toFileOffset: offset + UInt64(intIndex))
return UInt64(intIndex) + offset
}
}
return nil
}
当应用于某些 utf8 文本文件时,它会产生远离传入单词位置的偏移结果。我认为它必须是字符编码(可变字节字符),因为 seek(toFileOffset:) 方法适用于类 Data对象。
有什么想法可以解决吗?