从字符串中删除重复字符的方法(Java)

Jos*_*ond 3 java loops duplicates

字符串userKeyword来自用户键盘输入 - 我试图编写一个方法来返回此字符串,并删除重复的字符.

建议我使用charAt和indexOf来完成这个任务,所以最简单的方法似乎是通过字母表运行,让indexOf挑选出关键字中出现的任何字符并将它们连接在一起.我试图在下面这样做,但没有成功.

是否有更简单或更直接的方法来实现这一目标?

为什么我的代码不起作用?(我得到了26'的回报)

public static final String PLAIN_ALPHA = "abcdefghijklmnopqrstuvwxyz";

private String removeDuplicates(String userKeyword){

    int charLength = PLAIN_ALPHA.length();
    int charCount = 0;
    char newCharacter = PLAIN_ALPHA.charAt(charCount);
    String modifiedKeyword = "";

    while (charCount < charLength){

            if (userKeyword.indexOf(newCharacter) != -1);{
            modifiedKeyword = modifiedKeyword + newCharacter;
            }

            charCount = charCount + 1;
    }

    return modifiedKeyword;
}
Run Code Online (Sandbox Code Playgroud)
    while (charCount < charLength){

            newCharacter = PLAIN_ALPHA.charAt(charCount);

            if (userKeyword.indexOf(newCharacter) != -1);{
            modifiedKeyword = modifiedKeyword + newCharacter;
            }

            charCount = charCount + 1;
Run Code Online (Sandbox Code Playgroud)

在while循环中移动了newCharacter赋值,我现在获得的输出与PLAIN_ALPHA相同,而不是userKeyword,省略了重复项.我究竟做错了什么?

Boh*_*ian 5

你可以只用一行:

private String removeDuplicates(String userKeyword){
    return userKeyword.replaceAll("(.)(?=.*\\1)", "");
}
Run Code Online (Sandbox Code Playgroud)

这通过替换为空白(即移除)字符串中稍后再次出现的所有字符来实现,通过使用"向前看"来实现对捕获字符的反向引用.