替换字符串中的字母,没有空格

时间:2015-01-15 02:22:14

标签: java

我的问题是如何分别更改字符串中的多个字母?我的意思是每个字母都改为另一个字母,例如改变(A到G,B到H,C到X,D到Y,G到A) 例如:

我这样做但没有发生

String test = "ACDGBBDDGG";
String outputText = test.replaceAll("ABCDG","GHXYA");

System.out.println(outputText);

输出应为

GXYAHHYYAA

3 个答案:

答案 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))));

您也可以收集结果并将其转换为字符串。