gpt4 book ai didi

java - 将特定字符串替换为另一个字符串 - String#replaceAll()

转载 作者:行者123 更新时间:2023-11-30 03:01:15 25 4
gpt4 key购买 nike

我实际上正在开发一个解析器,但我被困在一个方法上。

我需要清理某些句子中的特定单词,这意味着用空格或 null 字符替换这些单词。现在,我想出了这段代码:

private void clean(String sentence)
{
try {
FileInputStream fis = new FileInputStream(
ConfigHandler.getDefault(DictionaryType.CLEANING).getDictionaryFile());
BufferedReader bis = new BufferedReader(new InputStreamReader(fis));
String read;
List<String> wordList = new ArrayList<String>();

while ((read = bis.readLine()) != null) {
wordList.add(read);
}
}
catch (IOException e) {
e.printStackTrace();
}

for (String s : wordList) {
if (StringUtils.containsIgnoreCase(sentence, s)) { // this comes from Apache Lang
sentence = sentence.replaceAll("(?i)" + s + "\\b", " ");
}
}

cleanedList.add(sentence);

}

但是当我查看输出时,我的句子中所有出现的要替换的单词都被空格替换了。

有人可以帮我只替换句子中要替换的确切单词吗?

提前致谢!

最佳答案

您的代码中有两个问题:

  • 您缺少字符串之前\b
  • 如果文件中的任何单词包含特殊字符,您将会遇到问题

要解决此问题,请按如下方式构建正则表达式:

sentence = sentence.replaceAll("(?i)\\b\\Q" + s + "\\E\\b", " ");

sentence = sentence.replaceAll("(?i)\\b" + Pattern.quote(s) + "\\b", " ");

关于java - 将特定字符串替换为另一个字符串 - String#replaceAll(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35889377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com