我有一个大文本文件,将用作英语词典数据库。 (一本真正的字典)
用户将在搜索栏中键入单词,应用程序将返回包含该单词的文本文件的所有行。
* - 每行解释一个词的含义
- 有些单词位于我的文本文件*
中的多行这是我的逻辑:
首先,我在 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行。
这样可以正常工作,但它只返回找到的第一个条目。
你能帮我找到如何返回包含搜索字词的所有行号吗?
感谢您的宝贵帮助
答案 0 :(得分:2)
// 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++
}
答案 1 :(得分:1)
枚举行并搜索每一行:
var lines: [String] = []
var lineNumber = 1; // or start with 0
self.entriesFromFile.enumerateLinesUsingBlock { line, stop in
if line.rangeOfString(searchedText) != nil {
lines.append(line) // or store the lineNumbers
}
lineNumber++
}
我在这里直接编写代码,可能需要更改才能编译:P