Java 从字符串中删除所有非单词字符(标点符号)

Java 从字符串中删除所有非单词字符(标点符号),java,string,special-characters,removing-whitespace,Java,String,Special Characters,Removing Whitespace,好的,这是我第一次发帖,所以如果我有任何错误,请原谅。长话短说,我得到了一个字符串数组,我的目标是对字符串中唯一的单词进行计数,并从数组中删除任何标点字符 public static HashMap<String, Integer> uniqueWords(String[] book) { HashMap<String, Integer> hm = new HashMap<>(); for (int i = 0; i < book.le

好的,这是我第一次发帖,所以如果我有任何错误,请原谅。长话短说,我得到了一个字符串数组,我的目标是对字符串中唯一的单词进行计数,并从数组中删除任何标点字符

public static HashMap<String, Integer> uniqueWords(String[] book) {
    HashMap<String, Integer> hm = new HashMap<>();

    for (int i = 0; i < book.length; i++) {
        if (hm.containsKey(book[i])) {
            hm.put(book[i], hm.get(book[i]) + 1);
        } else {
            book[i] = book[i].replaceAll("[^a-zA-Z]","").replaceAll("\\p{Punct}","").replaceAll("\\W+","").replaceAll("\\n","").toLowerCase();
            hm.put(book[i], 1);
        }
    }
    return hm;
}
公共静态HashMap uniqueWords(String[]book){
HashMap hm=新的HashMap();
for(int i=0;i
输入:{“红鱼”、“红鱼”、“红鱼”、“蓝鱼”、“蓝鱼”、“蓝鱼”、“*”、“%”、“\”

输出:{=2,蓝鱼=3,红鱼=3}

因此,我成功地删除了所有空白,但我仍然在计算星号和百分比

非常感谢您的帮助。

试试这样的方法--

公共静态HashMap uniqueWords(String[]book){
HashMap hm=新的HashMap();
字符串strBook=“”;
int键=1;
for(int i=0;i
我尝试了这方面的一些变体,但没有成功,谢谢您的解决方案。我意识到我的错误。很少会有非单词字符不附加到包含单词的字符串的情况,在这种情况下,我的代码将删除非单词字符:下面是代码的最终版本:publicstatichashmap uniqueWords(string[]book){HashMap hm=newhashmap();for(int i=0;i public static HashMap<String, Integer> uniqueWords(String[] book) { HashMap<String, Integer> hm = new HashMap<>(); string strBook = ""; int key = 1; for (int i = 0; i < book.length; i++) { strBook= book[i].replaceAll("[^a-zA-Z]","").replaceAll("\\p{Punct}","").replaceAll("\\W+","").replaceAll("\\n","").toLowerCase(); if (!hm.containsKey(strBook)) { hm.put(key, strBook); key++; } } return hm; }