一次更换多个字符

时间:2013-03-12 06:41:14

标签: 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')
        alteredAlp += 'b';
    else if(charAlp[i] == 'b')
        alteredAlp += 'c';
    else if(charAlp[i] == 'c')
        alteredAlp += 'a';
}

我尝试使用'replaceAll',在第一次迭代后我遇到了几个问题。

有关如何改善这一点的任何想法? 提前谢谢!

4 个答案:

答案 0 :(得分:5)

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

接下来,将charAlp.length - 1更改为charAlp.length,您的代码就可以使用。

相反,你可以这样做:(没有额外的字符串)

for (int i = 0; i < charAlp.length ; i++)
{
   if(charAlp[i] == 'a')
    charAlp[i]= 'b';
   else if(charAlp[i] == 'b')
    charAlp[i]= 'c';
   else if(charAlp[i] == 'c')
    charAlp[i]= 'a';
}
System.out.println(charAlp);

现在,您已将charAlp更改为&#34; bca&#34; 而不是&#34; abc&#34; (如您所愿)

答案 1 :(得分: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

答案 2 :(得分:0)

public static void main(String[] args) {
    String alp = "abc";
    String alteredAlp = "";
    for(int i=0; i<alp.length(); i++){
        if(alp.charAt(i)=='a')
            alteredAlp=alteredAlp + 'b';
        else if(alp.charAt(i)=='b')
            alteredAlp = alteredAlp+'c';
        else if(alp.charAt(i)=='c')
            alteredAlp=alteredAlp+'a';

    }
    System.out.println(alteredAlp);
}

试试这个: 无需创建字符数组。

输出:

bca

答案 3 :(得分:0)

您也可以使用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());
    }
}