我試圖使用Java掃描儀hasNext
方法,但我得到了奇怪的結果。也許我的問題很明顯,但爲什麼這個簡單的簡單表達式"[a-zA-Z']+"
不適用於這樣的詞語:「分,任何事,主管」。我也試過這個"[\\w']+"
。Java掃描器hasNext(字符串)方法有時不匹配
public HashMap<String, Integer> getDocumentWordStructureFromPath(File file) {
HashMap<String, Integer> dictionary = new HashMap<>();
try {
Scanner lineScanner = new Scanner(file);
while (lineScanner.hasNextLine()) {
Scanner scanner = new Scanner(lineScanner.nextLine());
while (scanner.hasNext("[\\w']+")) {
String word = scanner.next().toLowerCase();
if (word.length() > 2) {
int count = dictionary.containsKey(word) ? dictionary.get(word).intValue() + 1 : 1;
dictionary.put(word, new Integer(count));
}
}
scanner.close();
}
//scanner.useDelimiter(DELIMITER);
lineScanner.close();
return dictionary;
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
}
}
非常感謝@Angel Rodriguez這是一個很好的解決方案,但我不知道爲什麼不與hasnext(String)函數一起工作。 – flatronka 2013-04-07 18:02:34
好吧,我明白了你的意思,我已經編輯過......我解釋了爲什麼它不起作用......希望它有助於... – 2013-04-07 18:35:39
非常感謝你我已經得到了它。非常感謝您的幫助。 +1進行詳細解釋。 – flatronka 2013-04-07 23:00:24