在Java中用字符串中的多个替换替换多个字符?

在Java中用字符串中的多个替换替换多个字符?,java,replace,Java,Replace,我需要用字符串中的多个替换项替换多个字符。我想替换以下字母: Z、 I,K,A,Y,W,X,F,S,Q,V,G,N,O,H,J,B,p,T,R,M,E,L,C,U,D 与相应的: E、 T,O,A,I,N,R,S,H,L,D,F,M,C,U,G,W,Y,B,p,V,K,J,Q,Z,X 例如,“Z”变成“E”,“I”变成“T”,等等。 下面是一些示例代码: public static void main(String[] args) { String s = "LAMA XZRQAOZ";

我需要用字符串中的多个替换项替换多个字符。我想替换以下字母:

Z、 I,K,A,Y,W,X,F,S,Q,V,G,N,O,H,J,B,p,T,R,M,E,L,C,U,D

与相应的:

E、 T,O,A,I,N,R,S,H,L,D,F,M,C,U,G,W,Y,B,p,V,K,J,Q,Z,X

例如,“Z”变成“E”,“I”变成“T”,等等。 下面是一些示例代码:

public static void main(String[] args) {
    String s = "LAMA XZRQAOZ";
    // Replacing code
    // Output: s = "JAVA REPLACE"
}
最简单的方法是什么

注意:我曾尝试使用数组和for循环,但这会多次替换字母,因此它会将其替换为错误的字母


注2:我实际上要做的字符串长度超过10000个字符,因此我不知道一次迭代1个字符是否会太慢。

最简单的方法是将
字符串加载到
StringBuilder
中,然后在
StringBuilder
中迭代,一次测试并替换一个字符。在
开关
语句中或通过使用
映射
查找选择替换字符

(一个
Map
查找更简单/代码更少。一个
switch
语句应该更快。)

参见@Daniel Nugent的答案以获取示例解决方案


我怀疑你失败的尝试是这样的:

  for (replacement : ...) {
     str = str.replaceAll(...);
  }
显然,这是行不通的,因为被替换的字符可能会受到下一轮替换的影响

事实上,使用任何现有的
String.replace…
方法来实现这种形式的替换是不切实际的


注2:我实际上要做的字符串长度超过10000个字符,所以我不知道一次迭代1个字符是否会太慢


不会的。事实上,它将比多次调用replace快几个数量级,因为replace调用还必须在幕后一次迭代字符串一个字符。实际上,如果不单步遍历每个字符位置,就不可能替换
字符串中的单个字符。

使用。旁白:这看起来像一个简单的替换密码。您应该知道,这样的密码很容易破解。我可以用铅笔和纸在20分钟内完成:——)@StephenC是的,我正在尝试破解替换密码文本。我知道怎么用手做,但我想为它写一个程序。各方面意见一致,回答很好。为每个字符调用
replace()
replaceAll()
将不是一个好的解决方案。