我需要为文本文件编写一个解析器(至少20 kb),我需要确定这个文本文件中是否出现了一组单词中的单词(大约400个单词和数字)。所以我正在寻找最有效的可能性来做到这一点(如果找到匹配,我需要对此进行一些进一步处理,这是前一行)。
我目前所做的是排除那些不包含任何信息的行(元数据行的种类),然后逐字逐句比较 - 但我不认为只是逐字逐句比较是最有效的可能性。
任何人都可以提供一些提示/提示/想法/...
非常感谢
答案 0 :(得分:1)
这取决于你对“高效”的意思。
如果你想要一种非常简单的方法来编码它,请记住java中的String对象有方法String.contains(CharSequence sequence)。
然后,您可以将文件内容放入String中,然后使用方法contains()来迭代您要检查的关键字以查看是否有任何字符串出现在字符串中。
答案 1 :(得分:0)
以下内容如何:
Put all your keywords in a HashSet (Set<String> keywords;)
Read the file one line at once
For each line in file:
Tokenize to words
For each word in line:
If word is contained in keywords (keywords.containes(word))
Process actual line
If previous line is available
Process previous line
Keep track of previous line (prevLine = line;)