1

我试图将一个句子传递给一个函数,并在返回之前删除多次出现的模式。

我的功能看起来像这样......

  public String removeExtraStars(String str){
    String b = str.replaceAll("\\*\\s{2,}", "* ");
    return b;
  }

一个示例输入是"hi my name is * *" 我试图让输出看起来像"hi my name is *" 但它只是不会这样做。我已经在字符串上尝试过它,就像"my dinner was * * nice" 希望它能输出"my dinner was * nice" 但没有任何效果。有人可以告诉我我做错了什么。谢谢

ps 我认为最复杂的输出看起来像这样"* and * and * and *"

4

2 回答 2

4

您将需要更改您的正则表达式,以便之后不仅搜索 a *,而且搜索空格和附加*'s。

String str = "hi my name is * * * and * is * *";
String b = str.replaceAll("\\*(\\s+\\*)+", "*");

输出:

hi my name is *  and * is * 
于 2013-06-06T20:56:47.307 回答
2

您的正则表达式替换*(星号后跟两个空格)但不是* *. 如果我正确阅读了您的请求,您需要在量词之前进行分组:(\\*\\s){2,}它表示“星号后跟空格,至少两次”。

于 2013-06-06T20:51:45.713 回答