java - 如何使用HashMap忽略字符串中的空格、大写字母和标点符号?

标签 java string collections hashmap

你好,我正在尝试编写程序,该程序使用 HashMap 计算给定字符串中的所有字符,然后在控制台上打印结果,如:

{a=2, s=2, k=1, m=1, o=1}

到目前为止,我有这样的东西:

public void result(String sentence) {
    int value;
    HashMap<Character, Integer> mp = new HashMap<Character, Integer>();
    for (int i = 0; i < sentence.length(); i++) {
        if (mp.containsKey(sentence.charAt(i))) {
            value = mp.get(sentence.charAt(i));
            value++;
            mp.put(sentence.charAt(i), value);

        } else {
            mp.put(sentence.charAt(i), 1);
        }
    }

    System.out.print(mp);
}

我想问一下如何忽略给定字符串中的空格、大写字母和标点符号。 所以它不会显示在结果中?

希望有人能帮帮我谢谢!

最佳答案

我建议在将不需要的字符传递到 HashMap 之前将其过滤掉。

例如,

sentence = sentence.replaceAll("[^a-z]", "");

会删除除小写字母以外的任何内容,并且

sentence = sentence.replaceAll("[^a-z0-9]", "");

会给你留下小写字母和数字。

如果你想将大写字母转换为小写字母而不是忽略它们,那么首先使用

sentence = sentence.toLowerCase();

关于java - 如何使用HashMap忽略字符串中的空格、大写字母和标点符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49416388/

相关文章:

java - 屏幕更改后应用程序崩溃

java - 为什么 Eclipse Java 编译器会提示内部派生类型的转换未经检查?

java - 加载 Hive 内置函数失败

javascript - 如果字符串长于给定参数,则在字符串末尾添加句点

java - 根据各个字段的长度拆分字符串

java - 替换 forEach 并添加 collect

java - map : How to get all keys associated with a value?

java - List 中的 contains() 方法未按预期工作

java - android.view.ViewRootImpl$CalledFromWrongThreadException : Only the original thread that created a view hierarchy can touch its views

python - R 是否像 python 一样具有函数开头或结尾?