Java 从字符串中删除特定单词

Java 从字符串中删除特定单词,java,replace,Java,Replace,我试图使用函数replace()或replaceAll()从某个字符串中删除某个特定单词,但这些函数会删除该单词的所有出现,即使它是另一个单词的一部分 例如: 输出:“不喜欢,但MTAKE很常见” 所需输出:“不喜欢,但错误很常见” 如何仅替换字符串中的整个单词?您可以尝试将“is”替换为“”。前一个空格和后一个空格替换为单个空格 更新: 为了使它适用于句子中的第一个“is”,还可以将“is”替换为“for”。用空字符串替换第一个is和第一个空格。content=content.replaceA

我试图使用函数
replace()
replaceAll()
从某个字符串中删除某个特定单词,但这些函数会删除该单词的所有出现,即使它是另一个单词的一部分

例如:

输出:
“不喜欢,但MTAKE很常见”

所需输出:
“不喜欢,但错误很常见”

如何仅替换字符串中的整个单词?

您可以尝试将“is”替换为“”。前一个空格和后一个空格替换为单个空格

更新:


为了使它适用于句子中的第一个“is”,还可以将“is”替换为“for”。用空字符串替换第一个is和第一个空格。

content=content.replaceAll(“\\Wis\\W| ^is\\W|\\Wis$”,”)

见鬼

String regex = "\\s*\\bis\\b\\s*";
content = content.replaceAll(regex, "");
请记住,使用正则表达式需要使用
replaceAll(…)
,而不是
replace(…)

  • \\b
    提供单词边界
  • \\s*
    将要删除的单词两侧的所有空白都清除掉(如果您也要删除)
公共静态void main(字符串[]args){
扫描仪s=新的扫描仪(System.in);
字符串输入=s.nextLine();
char c=s.next().charAt(0);
System.out.println(removeAllOccurrencesOfChar(input,c));
}
公共静态字符串removeAllOccurrencesOfChar(字符串输入,字符c){
字符串r=“”;
对于(int i=0;i
是否需要使用“替换”?用绳子?您必须搜索要替换的不同字符串吗?您应该添加所有字符串中要替换的部分,也许您可以使用正则表达式来执行此操作,因为您可能需要特别处理这种情况,因为大写字母的缘故,可能需要多个
replaceAll()
调用才能工作?包括一个
replaceAll(“is\。”,“)或类似的东西来捕捉最后一个…你们都是对的。非常感谢。我已经更新了答案以包括该案例。如果字符串以“is”结尾,则还必须添加该大小写,总共添加3个。此外,正如Rob后来添加的那样,在额外的replaceAll调用中也应该考虑大写。您不需要
replaceAll(…)
not
replace(…)
来使用正则表达式的魔力吗?@HovercraftFullOfEels抱歉,没有测试。测试后编辑。:)还有一个问题。如果句子是“dog is cat”,则此代码将删除单词“is”两侧的空格,并将其改为“dogcat”。我认为最好编写
content=content.replaceAll(regex,“”)
,然后修剪结尾处的空格。请在代码中添加一些解释,以便其他人可以从中学习。这并不能解决问题。OP希望删除所有出现的
is
。代码将删除第一个字符的所有匹配项。
String regex = "\\s*\\bis\\b\\s*";
content = content.replaceAll(regex, "");
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        String input = s.nextLine();
        char c = s.next().charAt(0);
        System.out.println(removeAllOccurrencesOfChar(input, c));
    }


    public static String removeAllOccurrencesOfChar(String input, char c) {
   String r = "";
   for (int i = 0; i < input.length(); i ++) {
      if (input.charAt(i) != c) r += input.charAt(i);
      }
   return r;
      }
    }