Java replaceAll错误输出

时间:2014-05-25 11:47:09

标签: java

这不能正确输出。我已经读过使用\\但是这给了我另一个错误。任何帮助/替代方案?

string = string.replaceAll("a", newAlphabet.substring(0,1));
string = string.replaceAll("b", newAlphabet.substring(1,2));
string = string.replaceAll("c", newAlphabet.substring(2,3));
string = string.replaceAll("d", newAlphabet.substring(3,4));
string = string.replaceAll("e", newAlphabet.substring(4,5));

这只是代码的一部分。我试图更改消息,以便将字母表中的每个字母更改为另一个字母。像一个跳跃的字母表 ABCDEFGHIJKLMNOPQRSTUVWXYZ 会变成类似的东西 zmlapqokxswncdejibvhfurtgy

所以a = z等

当我尝试获取输出时,其中一半是正确的,有些是完全错误的,我不知道为什么

3 个答案:

答案 0 :(得分:0)

我认为这是替代方案 http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#replace%28java.lang.CharSequence,%20java.lang.CharSequence%29

public String replace(CharSequence target,CharSequence replacement)

答案 1 :(得分:0)

嗯......您的代码问题在于,在您将字母“a”更改为字母“z”后,您仍然会将所有字母“z”更改为另一个字母,即使是已经是转型的结果。

答案 2 :(得分:0)

如果您的文字只有ASCII字符,其值为< 128(或256),我会去映射数组:

String original    = "abcdefghijklmnopqrstuvwxyz";
String replacement = "zyxwvutsrqponmlkjihgfedcba";

int[] translate = new int[128];
for(int i = 0; i<128; i++) {
    translate[i] = i; //default = not change
}

for(int i = 0; i<original.length(); i++) {
    translate[original.charAt(i)] = replacement.charAt(i);
}

String toTranslate = "Hello world!";
StringBuilder sb = new StringBuilder();

for(int i = 0; i<toTranslate.length(); i++) {
    sb.append((char) translate[toTranslate.charAt(i)]);
}

String result = sb.toString();

System.out.println(result); //prints: Hvool dliow!

Threre是创建translate数组的更偏向的方式,但我希望这可以作为一个例子。