字符串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。我做错了什么?
答案 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;
}