我正在解析100个包含1000行的文件。
我必须检查行是否以一些关键字开头。
我有2个选项,不知道该考虑什么。
方案1:
String[] keywordsArr = { "Everything", "Think", "Result", "What", "#Shop", "#Cure" };
for (int i = 0; i < linesOfCode.length; i++) {
for (String keyWord : keywordsEndingAtEndOfLogicalLine) {
if (linesOfCode[i].indexOf(keyWord) > -1) {
if (linesOfCode[i].trim().startsWith(keyWord)) {
linesOfCode[i] = "";
break;
}
}
}
}
方案2:
String[] keywordsArr = { "Everything", "Think", "Result", "What", "#Shop", "#Cure" };
for (int i = 0; i < linesOfCode.length; i++) {
for (String keyWord : keywordsArr) {
if (linesOfCode[i].trim().startsWith(keyWord)) {
linesOfCode[i] = "";
break;
}
}
}
以关键字开头的行的频率是1/100。
3条答案
按热度按时间xam8gpfp1#
为了避免在字符串的开头查找关键字,在整个字符串中扫描关键字没有什么意义。如果是为了避免昂贵的
trim
,则使用更便宜的技术来查找行中的第一个令牌可能是合理的。请注意
startsWith
如果行以前缀为关键字的单词开头,则比较可能产生误报。例如,如果关键字break
,代码行,例如:会被错误地消除。
你可能想用
StringTokenizer
要提取字符串中的第一个单词,甚至更好,请使用正则表达式。pkwftd7m2#
尝试使用continue而不是break。continue不是停止循环,而是告诉程序向上一级,从而继续循环下一项。
csbfibhn3#
这是正则表达式非常适合的。你的代码相当于
但你可能需要一个词(
\\b
)在关键字之后。为了提高速度,您应该像