我有一个大文本文件,将用作英语词典数据库。 (真正的字典)
用户将在搜索栏中键入一个词,应用程序将返回包含该词的文本文件的所有行。
*-每行解释一个词的意思
-有些词在我的文本文件中位于不止一行*
这是我的逻辑:
首先,我在 self.entriesFromFile(这是我的文本文件的一个字符串)中寻找单词:
var range:NSRange? = self.entriesFromFile!.rangeOfString(searchText)
然后我找到子串:
var substring:NSString = self.entriesFromFile!.substringToIndex(range!.location)
我将子串分成几行
var substringArray:NSArray = substring.componentsSeparatedByString("\n")
像这样 substringArray.count 将返回找到 searchText 的当前行。我需要行号来识别字典中的单词以实现更多功能。
我使用这个逻辑是因为我需要它对用户来说是快速的,文本文件包含超过 60,000 行。
这工作正常,但它只返回已找到的第一个条目。
你能帮我找到如何返回包含搜索词的所有行号吗?
感谢您宝贵的帮助
请您参考如下方法:
// I assume that searchText already has all file content
var lines = searchText.componentsSeparatedByString("\n")
var lineNumber = 0
for line in lines {
// It will fire 60.000 times
if string.rangeOfString("Some string you are searching for") != nil {
linesNumbers.append(lineNumber)
}
lineNumber++
}
