java - 如何用不同的字符串替换字符串中的特定字符?

标签 java arrays string replace

给定一个

String text = "RHKKA";

如何高效地将所有'R'替换为'H',将所有'H'替换为'E',所有 'K' 都带有 'L',所有 'A' 都带有 'O'

然后字符串文本将是 HELLO

最佳答案

您可以创建一个字符映射作为键和值,然后像这样逐个字符循环:

String text = "RHKKA";
Map<Character, Character> map = new HashMap<>();
map.put('R', 'H');
map.put('H', 'E');
map.put('K', 'L');
map.put('A', 'O');
char[] chars = text.toCharArray();
for (int i = 0; i < chars.length; i++) {
    chars[i] = map.get(chars[i]);
}
String result = String.valueOf(chars);
System.out.println(result.toString());//HELLO

Java8+可能的解决方案

或者,如果您使用的是 Java8+,则可以使用:

String result = text.chars()
        .mapToObj(c -> String.valueOf(map.get((char) c)))
        .collect(Collectors.joining());//HELLO

Java9+可能的解决方案

另一种可能的解决方案是使用 Matcher::replaceAll像这样:

String text = "RHKKA";
Map<Character, Character> map = Map.of('R', 'H', 'H', 'E', 'K', 'L', 'A', 'O');
text = Pattern.compile(".").matcher(text)
        .replaceAll(c -> String.valueOf(map.get(c.group().charAt(0))));//HELLO

您可以阅读更多关于 Map.of 的信息

关于java - 如何用不同的字符串替换字符串中的特定字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52028665/

相关文章:

Java Jframe 向另一个 X Server 启动另一个 JFrame

java - 如果将 SharedPreferences 放在那里,代码将不起作用

c - 我正在创建一个程序,它接受用户的五个输入并使用另一个函数显示最大的输入

php - 引用 - 这个错误在 PHP 中意味着什么?

regex - jQuery 验证插件 : accept only German letters

python - 可以从左侧截断的 Python 缓冲区?

java - 如何在jsp页面中显示选中的数据

java - CSS:将文本附加到输入文本的值中

java - AssertEquals 2 列表忽略顺序

c# - 检查字典是否包含子字符串?