在Java中从文本文件中查找短语
我的目标是阅读一个文本文件,并找到某些单词来替换。然后,它将替换这些单词,并输出一个新的文本文件,该文件将替换这些单词。我的代码适用于单个单词,但如果我尝试用空格替换短语,它就不起作用。我拥有的是一个HashMap,其中包含我需要在文件中搜索的内容在Java中从文本文件中查找短语,java,string,hashmap,replaceall,Java,String,Hashmap,Replaceall,我的目标是阅读一个文本文件,并找到某些单词来替换。然后,它将替换这些单词,并输出一个新的文本文件,该文件将替换这些单词。我的代码适用于单个单词,但如果我尝试用空格替换短语,它就不起作用。我拥有的是一个HashMap,其中包含我需要在文件中搜索的内容 HashMap<String, Integer> hm = new HashMap<>(); hm.put("null",0); hm.put("
HashMap<String, Integer> hm = new HashMap<>();
hm.put("null",0);
hm.put("max",1);
hm.put("Do not repeat",2);
hm.put("names",3);
如果我在诸如“请勿重复”之类的词中有空格,则此操作无效。我怎样才能让它适用于短语而不仅仅是单个单词?它完全跳过短语并输出新文件,只替换单个单词。这与空格无关,是因为大写字母D
text.toLowerCase(Locale.ROOT)
将生成一个只包含小写字母的字符串,因此在其中找不到“请勿重复”
您可以通过传递以下命令使replaceAll
不区分大小写:
请注意,您可能会在正在搜索的字符串中遇到元字符问题。如果可能包含句点(
)之类的内容,则应引用检查
:
text = text.replaceAll("(?i)" + Pattern.quote(check), "WRONG");
此外,由于您没有考虑单词边界,您可能会遇到。这与空格无关,而是因为大写的D
text.toLowerCase(Locale.ROOT)
将生成一个只包含小写字母的字符串,因此在其中找不到“请勿重复”
您可以通过传递以下命令使replaceAll
不区分大小写:
请注意,您可能会在正在搜索的字符串中遇到元字符问题。如果可能包含句点(
)之类的内容,则应引用检查
:
text = text.replaceAll("(?i)" + Pattern.quote(check), "WRONG");
此外,因为您没有考虑Word边界,您可能会碰到.
它不是空格,它是上行的D,不是。BTW,如果您想替换文字字符串,您应该考虑引用它,例如“代码>模式。引用(检查)< /代码>,以避免与元字符惊人的事情。或者只需使用ofc的替换。谢谢!我觉得很傻!你知道一种不用把文本文件改成小写的方法吗?你的意思是,如何不区分大小写?是的,我想检查一下,而不用把文件中的所有字母都改成小写!它不是空格,它是上限的D,不是。BTW,如果你想替换文字字符串,你应该考虑引用它,例如“代码>模式。引用(检查)< /代码>,以避免与元字符惊人的事情。或者只需使用ofc的替换。谢谢!我觉得很傻!你知道一种不用把文本文件改成小写的方法吗?你的意思是,如何不区分大小写?是的,我想检查一下,而不用把文件中的所有字母都改成小写!完美的正是我想学的!。非常感谢。完美的正是我想学的!。非常感谢。