1

文字列「abc」を特定のパターンに置き換えようとしています:

'a' の場合は 'b' に置き換え、'b' の場合は 'c' に置き換え、'c' の場合は 'a' に置き換えます。

私が今持っているコードは次のとおりです。

String alp = "abc";
String alteredAlp = "";
char [] charAlp = alp.toLowerCase().toCharArray();

for (int i = 0; i < charAlp.length() - 1; i++)
{
    if(charAlp[i] == 'a')
        alteredAlp += 'b';
    else if(charAlp[i] == 'b')
        alteredAlp += 'c';
    else if(charAlp[i] == 'c')
        alteredAlp += 'a';
}

「replaceAll」を使用してみましたが、最初の反復後にいくつかの問題が発生しました。

これを改善する方法についてのアイデアはありますか? 前もって感謝します!

4

4 に答える 4

1

もう少し一般的な方法:

アルファベットは隙間なく定義する必要があります。

しかし、「abcdefgh」にすることもできます:)

public class CharObfuscator {

    public static final String ALPHABET = "abc";

    public static String obfuscate(String obfuscateThis) {

        char bottomLevel = ALPHABET.charAt(0); // its an 'a' (int 97)
        char topLevel = ALPHABET.charAt(ALPHABET.length() - 1); // its an 'c' (int 99)

        StringBuilder stringBuilder = new StringBuilder();
        for (char character : obfuscateThis.toLowerCase().toCharArray()) {
            if ((character - bottomLevel + 1) % (topLevel - bottomLevel + 1) != 0) {
                stringBuilder.append(++character);
            } else {
                stringBuilder.append(bottomLevel);
            }
        }

        return stringBuilder.toString();
    }

    public static void main(String[] args) {
        System.out.println(obfuscate("abccbaaabbcc"));
    }

}

結果:

bcaacbbbccaa
于 2013-03-12T07:43:25.703 に答える