2011-03-07 82 views
1

我有一个Java String这样删除两个以上连续发生

String str="&P;&P;&P;&P;&P;&P;&P;&P;&P;&P;&P;&P; Tannay Mnadal &P;&P;&P;&P;&P;&P; Tata" 

我想删除所有&P;在连续发生的两成以上。

即。任何function(str),将返回"&P;&P;" Tannay Mnadal &P;&P; Tata

任何帮助将不胜感激。 感谢

回答

3
str = str.replaceAll("&P;&P;(&P;)+", "&P;&P;"); 
+0

@jzd:雅我发布后,我的整个网络都关闭了。刚刚从我的智能手机上修复它。尽管如此,我更喜欢范围操作员。 – 2011-03-07 16:44:44

+0

@jzd:实际上它满足了三个或更多的要求(他说“超过两个”),但@Tanmay说他想删除所有**'&P;',其中有两个或更多,这就是我原本给了。但他的例子表明,他想除去两个**'&P;'以外的所有**。 – 2011-03-07 16:49:15

+0

是的,我现在看到他的要求与他的例子不符。 – jzd 2011-03-07 17:05:23

3

使用正则表达式与replaceAll()

喜欢的东西:

​​
1

您可以尝试使用正则表达式替换:

public String function(String str) 
{ 
    return str.replaceAll("&P;&P;(&P;)+", "&P;&P;"); 
    // I understood you wanted to keep two times "&P;" 
} 
+0

+1。因为我必须只接受一个答案 – 2011-03-07 17:54:46

1

你可以实现你想要的正则表达式很容易:

public String removeOcurrences(String input) { 

    return input.replaceAll("(&P;&P;)(?:&P;)*", "$1"); 
} 

希望它有帮助。

问候。

+0

+1。因为我必须只接受一个答案 – 2011-03-07 17:53:58