我有一个数据文件,其中每一行代表一条记录,每条记录可能包含一个关键字列表,每个关键字前面都有一个“+”。
foo1 foofoo foo foo foo +key1 +key2 +key3
foo2 foo foo foofoo foo
foo3 foo foofoo foo +key1 key1 key1 +key2
将有零到理论上无限数量的关键字。关键字总是以 + 开头。单个关键字可以是单个单词,也可以是带有空格的短语。我识别关键字的策略:
我想将这些记录读入一个数组,String keywords[]
. 我lineBuffer
用来把数据带进来,这就是我到目前为止所拥有的。
// PSEUDOCODE
counter = [number of occurences of + in the line];
for(int i=0;i<=counter,i++) {
Pattern p = [regex reresenting + to the next occurence of + -or- end of line];
Match pattern;
keyword[i] = Match.group(1) }
我可能想多了,但是 Java 是否知道在同一行中转到我的模式的下一个实例?查看这几行代码,我的模式匹配器似乎会读取该行,找到关键字的第一个实例并将其i
多次写入数组。它永远不会 GET 到第二个关键字。
有没有更好的方法来思考这个问题?创建此数组的更好策略?