我有一个字符串数组(关键字),我需要检查有多少字符串存在于一个较大的字符串中(从文件中读取的文本)。我需要检查不区分大小写。此刻我要做的是:
private void findKeywords() {
String body = email.getMessage();
for (String word : keywords) {
if (body.toLowerCase().contains(word.toLowerCase())) {
//some actions }
if (email.getSubject().contains(word)) {
//some actions
}
}
}
通过阅读此处的问题,出现了另一个解决方案:
private void findKeywords() {
String body = email.getMessage();
for (String word : keywords) {
boolean body_match = Pattern.compile(Pattern.quote(word), Pattern.CASE_INSENSITIVE).matcher(body).find();
boolean subject_match = Pattern.compile(Pattern.quote(word), Pattern.CASE_INSENSITIVE).matcher(email.getSubject()).find();
if (body_match) {
rating++;
}
if (subject_match) {
rating++;
}
}
}
这些解决方案中哪个更有效?还有另一种更好的方法吗?任何公认的解决方案都必须易于实施(与上述方案相当),并且最好没有外部库,因为在这种情况下这不是很重要的问题。