从字符串 JAVA 中删除序列字符
Removing sequence character from string JAVA
输入会像,
hiii, i love java soooo much
预期的输出会像
hi, i love java so much
对于我模糊的编码如下,
List<String> wordList = Arrays.asList(word.split(""));
String previousCharacter;
boolean inneFlag = false;
boolean flag = false;
int iterator = 0;
int characterIterator = 0;
String finalizedWord = "";
previousCharacter = wordList.get(0);
for(String character : wordList){
if((wordList.size()-1)==characterIterator){
inneFlag = true;
}
if(flag){
if(character.equalsIgnoreCase(previousCharacter)){
iterator++;
if(inneFlag){
if(iterator>2){
finalizedWord = finalizedWord.substring(0,(finalizedWord.length()-iterator));
}
}
}else{
previousCharacter = character;
if(iterator>=2){
finalizedWord = finalizedWord.substring(0,(finalizedWord.length()-iterator));
}
iterator = 0;
}
}else{
flag = true;
}
characterIterator++;
finalizedWord += character;
}
谁能给出更好的解决方案??
一个简单的正则表达式就可以完成这项工作。
string.replaceAll("([A-Za-z])\1+", "");
或
string.replaceAll("(.)\1+", "");
输入会像,
hiii, i love java soooo much
预期的输出会像
hi, i love java so much
对于我模糊的编码如下,
List<String> wordList = Arrays.asList(word.split(""));
String previousCharacter;
boolean inneFlag = false;
boolean flag = false;
int iterator = 0;
int characterIterator = 0;
String finalizedWord = "";
previousCharacter = wordList.get(0);
for(String character : wordList){
if((wordList.size()-1)==characterIterator){
inneFlag = true;
}
if(flag){
if(character.equalsIgnoreCase(previousCharacter)){
iterator++;
if(inneFlag){
if(iterator>2){
finalizedWord = finalizedWord.substring(0,(finalizedWord.length()-iterator));
}
}
}else{
previousCharacter = character;
if(iterator>=2){
finalizedWord = finalizedWord.substring(0,(finalizedWord.length()-iterator));
}
iterator = 0;
}
}else{
flag = true;
}
characterIterator++;
finalizedWord += character;
}
谁能给出更好的解决方案??
一个简单的正则表达式就可以完成这项工作。
string.replaceAll("([A-Za-z])\1+", "");
或
string.replaceAll("(.)\1+", "");