删除字符串中的重复字符

abe*_*out 2 java string replace

我需要编写一个静态方法,它接受一个String参数并返回一个新的String,它通过用该字母的单个实例替换重复的相邻字母的每个实例而不使用正则表达式.例如,如果我输入"maaaakkee"作为a String,则返回"make".我已经尝试了以下代码,但它似乎没有显示最后一个字符.这是我的代码:

import java.util.Scanner;
public class undouble {
    public static void main(String [] args){
        Scanner console = new Scanner(System.in);
        System.out.println("enter String: ");
        String str = console.nextLine();
        System.out.println(removeSpaces(str));
    }
public static String removeSpaces(String str){
    String ourString="";
    int j = 0;
    for (int i=0; i<str.length()-1 ; i++){
        j = i+1;
        if(str.charAt(i)!=str.charAt(j)){
            ourString+=str.charAt(i);
        }

    }

    return ourString;
    }
}
Run Code Online (Sandbox Code Playgroud)

Men*_*ena 41

你可以使用正则表达式.

例如:

String input = "ddooooonnneeeeee";
System.out.println(input.replaceAll("(.)\\1{1,}", "$1"));
Run Code Online (Sandbox Code Playgroud)

输出:

done
Run Code Online (Sandbox Code Playgroud)

模式说明:

  • "(.)\\1{1,}" 表示任何字符(添加到组1),后跟自身至少一次
  • "$1" 引用第1组的内容

  • 很好的正则表达式,但为什么`{1,}`如果你可以使用`+`? (3认同)
  • 啊; 你打败了我.[Java Regex Tutorial](http://www.vogella.com/articles/JavaRegularExpressions/article.html)对如何使用正则表达式有很好的解释. (2认同)
  • @Predator44 不客气!很抱歉听到你不能使用它:( (2认同)