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

时间:2013-08-10 09:37:00

标签: 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;
}

    while (charCount < charLength){

            newCharacter = PLAIN_ALPHA.charAt(charCount);

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

            charCount = charCount + 1;

在while循环内移动了newCharacter赋值,我现在得到一个与PLAIN_ALPHA相同的输出,而不是省略了重复项的userKeyword。我做错了什么?

2 个答案:

答案 0 :(得分:5)

你可以只用一行:

private String removeDuplicates(String userKeyword){
    return userKeyword.replaceAll("(.)(?=.*\\1)", "");
}

这可以通过替换为空白(即删除)字符串中稍后出现的所有字符来实现,通过使用“向前看”来实现对捕获字符的反向引用。

答案 1 :(得分:3)

你可以试试这个......

private String removeDuplicates(String userKeyword){

        int charLength = userKeyword.length();
        String modifiedKeyword="";
        for(int i=0;i<charLength;i++)
            {
             if(!modifiedKeyword.contains(userKeyword.charAt(i)+""))
                 modifiedKeyword+=userKeyword.charAt(i);
            }
        return modifiedKeyword;
    }