Java 一次替换多个字符

Java 一次替换多个字符,java,android,replace,Java,Android,Replace,我试图用某些模式替换字符串“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') alt

我试图用某些模式替换字符串“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';
}
String alp=“abc”;
字符串alteredAlp=“”;
char[]charAlp=alp.toLowerCase().toCharArray();
对于(int i=0;i
我尝试使用“replaceAll”,但在第一次迭代后遇到了一些问题

有没有办法让这一切变得更好?
提前谢谢

对于
char[]
没有
length()
这样的方法。将其更改为
charAlp.length

接下来,将
charAlp.length-1
更改为
charAlp.length
,您的代码将正常工作

相反,您可以这样做:(不需要额外的字符串)

for(int i=0;i

现在,您将
charAlp
更改为“bca”而不是“abc”(如您所愿)

对于
char[]
没有
length()
这样的方法。将其更改为
charAlp.length

接下来,将
charAlp.length-1
更改为
charAlp.length
,您的代码将正常工作

相反,您可以这样做:(不需要额外的字符串)

for(int i=0;i

现在,您将
charAlp
更改为“bca”而不是“abc”(如您所愿)

您也可以使用StringBuilder进行相同的操作,如下所示:

public class CharReplace {

    public static void main(String[] args) {
        String alp = "abc";
        StringBuilder alteredAlp = new StringBuilder();

        for (int i = 0; i < alp.length(); i++) {
            switch(alp.charAt(i)) {
                case 'a':
                    alteredAlp.append('b');
                    break;
                case 'b':
                    alteredAlp.append('c');
                    break;
                case 'c':
                    alteredAlp.append('a');
                    break;
            }
        }

        System.out.println(alteredAlp.toString());
    }
}
公共类字符替换{
公共静态void main(字符串[]args){
字符串alp=“abc”;
StringBuilder alteredAlp=新StringBuilder();
对于(int i=0;i
您也可以使用StringBuilder进行同样的操作,如下所示:

public class CharReplace {

    public static void main(String[] args) {
        String alp = "abc";
        StringBuilder alteredAlp = new StringBuilder();

        for (int i = 0; i < alp.length(); i++) {
            switch(alp.charAt(i)) {
                case 'a':
                    alteredAlp.append('b');
                    break;
                case 'b':
                    alteredAlp.append('c');
                    break;
                case 'c':
                    alteredAlp.append('a');
                    break;
            }
        }

        System.out.println(alteredAlp.toString());
    }
}
公共类字符替换{
公共静态void main(字符串[]args){
字符串alp=“abc”;
StringBuilder alteredAlp=新StringBuilder();
对于(int i=0;i
一种更通用的方式: 字母表必须定义为无间隙

但也可以是“abcdefgh”:

结果: 一种更通用的方式: 字母表必须定义为无间隙

但也可以是“abcdefgh”:

结果:
bca
public class CharReplace {

    public static void main(String[] args) {
        String alp = "abc";
        StringBuilder alteredAlp = new StringBuilder();

        for (int i = 0; i < alp.length(); i++) {
            switch(alp.charAt(i)) {
                case 'a':
                    alteredAlp.append('b');
                    break;
                case 'b':
                    alteredAlp.append('c');
                    break;
                case 'c':
                    alteredAlp.append('a');
                    break;
            }
        }

        System.out.println(alteredAlp.toString());
    }
}
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