当前位置: 首页 > 知识库问答 >
问题:

如何用replace/regex替换字符串中的两个字符?

苏承载
2023-03-14

我已经做了一个有效的解决方案,但它很无聊,也很不优雅:

String input = "This is a test";
char a = 'i';
char b = 'e';

char[] chars = input.toCharArray();
for(int i = 0; i < chars.length; i++) {
    if(chars[i] == a) {
        chars[i] = b;
    }else if(chars[i] == b) {
        chars[i] = a;
    }
}

input = new String(chars);

如何使用Regex实现这一点?

共有1个答案

滑骞尧
2023-03-14

从Java9开始,我们可以使用matcher#replaceAll(function ) 。因此,您可以创建regex,它将搜索IE,当它找到时,让函数根据找到的值选择替换(如从map中)

演示

Map<String, String> replacements = Map.ofEntries(
        Map.entry("i", "e"), 
        Map.entry("e", "i")
);
String replaced = Pattern.compile("[ie]")
                         .matcher(yourString)
                         .replaceAll((match) -> replacements.get(match.group()));

但老实说,您的解决方案看起来不错,尤其是用于搜索单个字符时。

 类似资料:
  • 问题内容: 我们有一个数据库,该数据库的一列中有一堆记录,其中包含一些不良数据,其中的嵌入式编辑器转义了一些本不应该转义的内容,并且破坏了生成的链接。 我想运行一个查询来替换所有记录中的坏字符,但无法弄清楚该怎么做。我在MySQL中找到了该函数,但是如何在查询中使用它呢? 例如,如果我想用该列中所有记录中的实际小于尖括号()替换字符串,那么正确的语法是什么?是否可以在单个查询中完成(即一次选择并替

  • 本文向大家介绍如何使用MySQL replace()替换多个记录中的字符串?,包括了如何使用MySQL replace()替换多个记录中的字符串?的使用技巧和注意事项,需要的朋友参考一下 该函数可用于将一个字符串替换为另一个字符串。要理解,我们需要创建一个包含一些记录的表。以下是创建表的查询。 在INSERT命令的帮助下插入一些记录。插入记录的查询如下- 让我们检查表“ replaceDemo”中

  • 我希望我的程序替换输入字符串中的每个元音。

  • 问题内容: 假设我有以下代码: 这段代码运行后,价值会 如果我以相反的顺序替换它们,则会发生类似的问题: 的值将是 我的目标是把成我怎么能做到呢? 问题答案: 使用Apache Commons StringUtils中的方法:

  • 本文向大家介绍MySQL REPLACE()函数如何替换多个记录中的字符串?,包括了MySQL REPLACE()函数如何替换多个记录中的字符串?的使用技巧和注意事项,需要的朋友参考一下 如果要替换多个记录中的字符串,则函数必须将列名称作为第一个参数,即在字符串的位置。这意味着它将用该特定列中的另一个子字符串替换所有子字符串。我们还可以将WHERE子句与UPDATE语句一起使用,以应用条件。通过以

  • replace实用工具可以及时更改文件或标准输入中的字符串。它首先使用有限状态机来匹配长的字符串。该工具可以用来交换字符串。例如,下面的命令交换给定文件file1和file2中的a和b: shell> replace a b b a -- file1 file2 ... 使用--选项来指示字符串-替换列表的结束位置和开始的文件名。 在命令行中的任何文件名被及时修改,因此在转换之前,可能要对源文件进