我有一個字符串(關鍵字)數組,我需要檢查一個較大字符串(從文件中讀取的文本)中存在多少個字符串。我需要檢查是不區分大小寫的。 這時我做什麼是這樣的:查找子串的最高性能
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++;
}
}
}
哪個這些解決方案的效率更高?還有另一種方法可以做到這一點更好嗎?任何可接受的解決方案都必須易於實施(與上述相同),最好不使用外部庫,因爲在這種情況下這不是非常重要的問題。
爲什麼不嘗試每一個,看看哪一個運行最快的??? – 2013-03-08 21:03:15
因爲那麼我不知道是否有更快的解決方案從上面。 – Giannis 2013-03-08 21:06:31
http://codereview.stackexchange.com – 2013-03-08 21:07:47