用正则表达式替换一个字符与其他索引?

时间:2013-04-05 16:32:43

标签: java regex

可以使用匹配indice中的特定字符替换java中String中的字符。

例如:

我想使用一些特定的地图:

a = d,b = e,c = f

然后:想用d替换a,用e替换a,用f替换c。

这是代码的想法:

    String src = "text_abc";
    String regex = "a|b|c";
    String replacement = "d|e|f";
    String replaced = src.replace(regex, replacement);

我不知道我应该在正则表达式和替换中使用正则表达式来做到这一点。

2 个答案:

答案 0 :(得分:1)

你为什么不这样做?

String replaced = src.replace("a", "d").replace("b", "e").replace("c", "f");

另请注意,要使用正则表达式,您需要使用replaceAll()而不是replace()

答案 1 :(得分:1)

您可以在这种情况下使用String.replace(char, char)

String src = "text_abc";
String replaced = src.replace('a', 'd')
                     .replace('b', 'e')
                     .replace('c', 'f');

如果你坚持使用正则表达式(对于这种情况来说这是一个愚蠢的想法,它效率低且不必要的维护),你可以使用Map进行相应的查找替换:

String src = "text_abc";

// Can move these to class level for reuse.
final HashMap<String, String> map = new HashMap<>();
map.put("a", "d");
map.put("b", "e");
map.put("c", "f");
final Pattern pattern = Pattern.compile("[abc]");

String replaced = src;
Matcher matcher;
while ((matcher = pattern.matcher(replaced)).find())
    replaced = matcher.replaceFirst(map.get(matcher.group()));

// System.out.println(replaced);

这是online code demo