我有一个字符串数组(关键字),我需要检查有多少字符串存在于一个较大的字符串中(从文件中读取的文本)。我需要检查不区分大小写。此刻我要做的是:
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++;
            }
        }
    }
这些解决方案中哪个更有效?还有另一种更好的方法吗?任何公认的解决方案都必须易于实施(与上述方案相当),并且最好没有外部库,因为在这种情况下这不是很重要的问题。