まず、タイトルが非常に説明的で申し訳ありませんが、正直なところ、私の問題を 1 つの文で説明する方法を思いつきませんでした。私がやっていることを説明するには:モノラルアルファベット暗号化のキーを最初に持つアルファベットを作成しています。正常に機能する重複を削除する方法を作成しました。私はこの割り当てのために少し余分な時間を持っているので、遊んでいます。重複を含まないセットを発見しました。
したがって、 Set を文字列に戻すと、次の文字列が得られます
[s、e、c、u、r.....x、y、z]
文字列には、必要のないこれらすべての文字が含まれています。そのため、私が書いた方法を使用して、文字以外のものをすべて削除します。初めて呼び出すと、
セキュリ....xyz
楽しみのために、メソッドをもう一度呼び出します。私は今残っています
セキュア....xyz
したがって、メソッドが最初にコンマと角かっこを削除することに成功し、スペースを削除せずに2回目の呼び出しでスペースを削除する理由を誰かが教えてくれれば、それは素晴らしいことです. 参考までに、私のコード
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;
}