在Java中用字符串中的多个替换替换多个字符?
我需要用字符串中的多个替换项替换多个字符。我想替换以下字母: 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”,等等。 下面是一些示例代码:在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";
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()
将不是一个好的解决方案。