从 Java 中的文本文件中查找短语

Find phrases from a text file in Java

我的目标是阅读文本文件并找到要替换的某些词。然后它将替换单词并输出一个替换了单词的新文本文件。我的代码适用于单个单词,但如果我尝试用 space 替换短语,它就不起作用。我拥有的是一个 HashMap,其中包含我需要在文件中搜索的内容。

 HashMap<String, Integer> hm = new HashMap<>();

            hm.put("null",0);
            hm.put("max",1);
            hm.put("Do not repeat",2);
            hm.put("names",3);

然后我遍历 HashMap,如果文件中包含该词,则用该词替换字符串。

                    for (String key : hm.keySet()) {
                        String check = key;
                        System.out.println(check);

                        text = text.toLowerCase(Locale.ROOT).replaceAll(check, "WRONG");
                    }
                    String new = text;

如果我在“不要重复”之类的词中有 space,这将不起作用。我怎样才能让它适用于短语而不仅仅是单个单词?它完全跳过短语并输出仅替换单个单词的新文件。

不是空格的问题,是D大写的问题

text.toLowerCase(Locale.ROOT)

将生成一个只包含小写字母的字符串,因此 "Do not repeat" 将不会在其中找到。

您可以通过传递 the appropriate flag:

使 replaceAll 不区分大小写
text = text.replaceAll("(?i)" + check, "WRONG");

请注意,您可能 运行 遇到与正在搜索的字符串中的元字符有关的问题。如果你可能包括一些东西,例如句点 (.),你应该引用 check:

text = text.replaceAll("(?i)" + Pattern.quote(check), "WRONG");

此外,由于您没有考虑单词边界,您可能 运行 进入 Scunthorpe problem