文字列 (キーワード) の配列があり、より大きな文字列 (ファイルから読み取ったテキスト) 内にそれらの文字列がいくつ存在するかを確認する必要があります。大文字と小文字を区別しないチェックが必要です。現時点で私がしていることはこれです:
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++;
}
}
}
これらのソリューションのうち、より効率的なのはどれですか? また、これを行う別の方法はありますか?受け入れられた解決策は、(上記と同等に) 実装が簡単でなければならず、できれば外部ライブラリを使用しないでください。これは、この場合はそれほど重要な問題ではないためです。