我试图将一个句子传递给一个函数,并在返回之前删除了多次出现的模式。
我的功能看起来像这样......
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"
但没有任何效果。
有人可以告诉我我做错了什么。
感谢
P.S。我认为最复杂的输出看起来像"* and * and * and *"
答案 0 :(得分:4)
您需要更改正则表达式,以便不仅搜索*
,而且还会搜索空格和其他*
。
String str = "hi my name is * * * and * is * *";
String b = str.replaceAll("\\*(\\s+\\*)+", "*");
输出:
hi my name is * and * is *
答案 1 :(得分:2)
您的正则表达式替换*
(星号后跟两个空格),但不是* *
。如果我正确地阅读了您的请求,您需要在量词之前进行分组:(\\*\\s){2,}
,其中“astrisk后跟空格,至少两次”。