有人可以帮助我吗?我不明白问题出在哪里......
我需要检查一个String是否有超过1个字符如'a',如果是这样我需要将所有'a'替换为空格,但我仍然只想要一个'a'。
String text = "aaaasomethingsomethingaaaa";
for(char c: text.toCharArray()){
if(c=='a'){
count_A++;//8
if(count_A>1) {//yes
//app crash at this point
do {
text.replace("a", "");
} while (count_A != 1);
}
}
}
应用程序在进入while循环时停止工作。有什么建议吗?非常感谢你!
答案 0 :(得分:2)
如果要替换除最后一个字符串之外的字符串中的每个a
,那么您可以尝试以下正则表达式选项:
String text = "aaaasomethingsomethingaaaa";
text = text.replaceAll("a(?=.*a)", " ");
somethingsomething a
修改强>
如果你真的想删除每个a
除了最后一个,那么请使用:
String text = "aaaasomethingsomethingaaaa";
text = text.replaceAll("a(?=.*a)", "");
答案 1 :(得分:1)
你也可以这样做
String str = new String ("asomethingsomethingaaaa");
int firstIndex = str.indexOf("a");
firstIndex++;
String firstPart = str.substring(0, firstIndex);
String secondPart = str.substring(firstIndex);
System.out.println(firstPart + secondPart.replace("a", ""));
答案 2 :(得分:0)
也许我错了,但我觉得你在谈论字符串中任何单个字符的运行。如果是这种情况,那么你可以使用这样的小方法:
public String removeCharacterRuns(String inputString) {
return inputString.replaceAll("([a-zA-Z])\\1{2,}", "$1");
}
使用此方法:
String text = "aaaasomethingsomethingaaaa";
System.out.println(removeCharacterRuns(text));
控制台输出是:
asomethingsomethinga
或者甚至可能:
String text = "FFFFFFFourrrrrrrrrrrty TTTTTwwwwwwooo --> is the answer to: "
+ "The Meeeeeaniiiing of liiiiife, The UUUniveeeerse and "
+ "Evvvvverything.";
System.out.println(removeCharacterRuns(text));
控制台输出是........
Fourty Two --> is the answer to: The Meaning of life, The Universe and Everything.
在提供的 removeCharacterRuns()方法中使用的正则表达式实际上是从this SO Post中提供的答案中借用的。
正则表达式说明: