首先,对不起,标题是超级描述性的,但老实说,我无法用一句话来解释我的问题。解释我在做什么:我正在创建一个字母表,该字母表的开头有一个用于单字母加密的密钥。我做了一个删除重复项的方法,效果很好。我有一些额外的时间来做这个评估,所以我一直在玩。我发现了不包含重复项的集合。
因此,当我将 Set 返回到一个字符串时,我有一个字符串读取
[s, e, c, u, r.....x, y, z]
该字符串中包含我不需要的所有这些字符。所以我使用我写的一种方法来删除任何不是字母的东西。当我第一次调用它时,我得到
安全....xyz
我,只是为了好玩,再次调用该方法。我现在只剩下
安全....xyz
因此,如果有人能告诉我为什么该方法第一次成功删除了逗号和方括号,但没有成功删除空格,但在第二次调用中删除了空格,那就太棒了。供参考,我的代码
public static String createMonoAlphabet(String key){
String crypticAlphabet = key;
crypticAlphabet = crypticAlphabet.concat("abcdefghijklmnopqrstuvwxyz");
//crypticAlphabet = removeDuplicates(crypticAlphabet);
Set alphabet = new LinkedHashSet();
for(int i = 0; i<crypticAlphabet.length(); i++){
alphabet.add(crypticAlphabet.charAt(i));
}
crypticAlphabet = alphabet.toString();
crypticAlphabet = parseInput(crypticAlphabet);
crypticAlphabet = parseInput(crypticAlphabet);
return crypticAlphabet;
}
那就是使用集合的方法。作为一个注释,在我只是在这里玩之前,我从来没有使用过它们,所以如果它是不好的做法或者那很好。随时让我知道,但我现在不那么担心现在对于删除非字母的方法
public static String parseInput(String input){
StringBuffer buf = new StringBuffer(input);
for(int i = 0; i < buf.length(); i++){
char c = buf.charAt(i);
if(!(((int)c >= 65 && (int)c <= 90) ||
((int)c >= 97 && (int)c <= 122))){
System.out.print(buf.charAt(i));
buf = buf.deleteCharAt(i);
}
}
System.out.print(".");
System.out.println();
input = buf.toString();
return input;
}