我正在嘗試讀取文本文件並創建具有獨特單詞及其頻率的哈希映射。我搜索了一種刪除標點符號的方法,並嘗試實施它,但它似乎沒有工作。我試過在第四行代碼中使用以下代碼:line = line.replaceAll(「\ p {Punct} +」,「」);移除標點符號和大寫字母的問題
我錯過了什麼嗎?
try (BufferedReader br = new BufferedReader(new FileReader("Book 1 A_Tale_of_Two_Cities_T.txt"))) {
StringBuilder sb = new StringBuilder();
String line = br.readLine();
line = line.replaceAll("\\p{Punct}+", "");
while (line != null) {
String[] words = line.split(" ");//those are your word
for (int i = 0; i < words.length; i++) {
if (m1.get(words[i]) == null) {
m1.put(words[i], 1);
} else {
int newValue = Integer.valueOf(String.valueOf(m1.get(words[i])));
newValue++;
m1.put(words[i], newValue);
}
}
sb.append(System.lineSeparator());
line = br.readLine();
}
}
Map<String, String> sorted = new TreeMap<>(m1);
for (Object key : sorted.keySet()) {
System.out.println("Word: " + key + "\tCounts: " + m1.get(key));
}
我期待的輸出結果如下:
字:有計數:279
字:隨即計數:1
字:這些計數:156
問題是,我也得到這個作爲輸出:
Word:the se,計數:3
Word:這些。瀏覽次數:2
字:這些」罪狀:1
我想的話,從末端刪除(開始)標點並將它們添加到‘這些’等
計數感謝您的幫助!
添加一個代碼出錯的例子。添加預期的和實際的輸出。 – Perdomoff
你的正則表達式看起來沒問題。你的意思是什麼「似乎沒有工作」?此外,您可以在一行代碼中執行此任務。 – Bohemian
@真正的職位作爲答案 – Bohemian