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

标签 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.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;
}

输入:{“红鱼”、“红鱼”、“红鱼”、“蓝鱼”、“蓝鱼”、“蓝鱼”、“*”、“%”、“”};

输出:{=2, bluefish=3, redfish=3}

所以我已经成功地删除了所有空白,但我仍然有星号和百分位数被计算在内。

感谢任何帮助,谢谢。

最佳答案

试试这样的——

    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;
}

关于java - 从字符串中删除所有非单词字符(标点符号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41309278/

相关文章:

java - 为什么 java 单线程在双核 (i5) 上的上限为 25%

java - 如何创建我的 java 项目的 .app 文件以在 mac os 上运行

javascript - 如何将关联数组连接到字符串中

Java-数组/字符串混搭错误?

regex - 替换字符串中最后一次出现的字符

Java,将主类传递给子类,编码风格不好?

java - Alfresco 5.0 : AuthenticationUtils. startSession 生成 404

javascript - 如何在 THREE.TextGeometry 中添加带上标的字符串?

c# - 忽略字符串中的字符 ""

Java UTF-8 到 ASCII 的转换及补充