25

我正在尝试使用该函数从某个字符串中删除一个特定的单词,replace()或者replaceAll()即使它是另一个单词的一部分,它们也会删除该单词的所有出现!

例子:

String content = "is not like is, but mistakes are common";
content = content.replace("is", "");

输出: "not like , but mtakes are common"

所需的输出: "not like , but mistakes are common"

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

4

4 回答 4

46

有没有搞错,

String regex = "\\s*\\bis\\b\\s*";
content = content.replaceAll(regex, "");

请记住,您需要replaceAll(...)使用正则表达式,而不是replace(...)

  • \\b给你单词边界
  • \\s*将要删除的单词两侧的任何空格都塞满(如果您也想删除它)。
于 2012-05-19T01:06:06.813 回答
5

content = content.replaceAll("\\Wis\\W|^is\\W|\\Wis$", "");

于 2012-05-19T01:05:45.867 回答
0

您可以尝试将“is”替换为“”。前后各有一个空格,替换为一个空格。

更新:

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

于 2012-05-19T01:03:18.107 回答
0
    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;
      }
    }
于 2020-01-05T15:39:35.650 回答