我的问题是如何分别更改字符串中的多个字母?我的意思是每个字母都改为另一个字母,例如改变(A到G,B到H,C到X,D到Y,G到A) 例如:
我这样做但没有发生
String test = "ACDGBBDDGG";
String outputText = test.replaceAll("ABCDG","GHXYA");
System.out.println(outputText);
输出应为
GXYAHHYYAA
答案 0 :(得分:4)
一种可能的方法是将char
及其替换添加到Map
然后"映射"两者之间喜欢
Map<Character, Character> map = new HashMap<>();
map.put('A', 'G');
map.put('B', 'H');
map.put('C', 'X');
map.put('D', 'Y');
map.put('G', 'A');
String test = "ACDGBBDDGG";
StringBuilder sb = new StringBuilder();
for (char c : test.toCharArray()) {
char o = map.containsKey(c) ? map.get(c) : c;
sb.append(o);
}
System.out.println(sb.toString());
另一种可能性(尽管在运行时更复杂)是在String
中使用相应的字符索引
String in = "ABCDG";
String out = "GHXYA";
String test = "ACDGBBDDGG";
StringBuilder sb = new StringBuilder();
for (char c : test.toCharArray()) {
int i = in.indexOf(c);
char o = (i > -1) ? out.charAt(i) : c;
sb.append(o);
}
System.out.println(sb.toString());
两个输出(请求的)
GXYAHHYYAA
答案 1 :(得分:0)
尝试outputText = test.replaceAll(“A”,“G”)。replaceAll(“B”,“H”)。replaceAll(“C”,“X”)等。
答案 2 :(得分:0)
如果你正在使用Java 8:
String fromChars = "ABCDG";
String toChars = "GHXYA";
String test = "ACDGBBDDGG";
test.chars().forEach(ch->System.out.print(toChars.charAt(fromChars.indexOf(ch))));
您也可以收集结果并将其转换为字符串。