【发布时间】:2021-09-23 16:59:57
【问题描述】:
假设我有一个String text = "abc",我想替换一个值映射,例如:
a->b
b->c
c->a
你会怎么做?
因为很明显:
map.entrySet().forEach(el -> text = text.replaceAll(el.getKey(), el.getValue()))
行不通,因为第二次替换也会覆盖第一次替换(最后你不会得到bca)
那么你将如何避免这种“替换之前的替换”?
我看到了this answer,但我希望有一个更简洁和天真的解决方案(希望不使用 Apache 外部包)
顺便说一下字符串也可以是多个字符
【问题讨论】:
-
a, b, c 是字符串还是字符?
-
地图的类型是什么?
Map<Character, Character>或Map<String, String>? -
大家好,抱歉耽搁了,“字符串映射”,所以
Map<String, String> -
如果映射是字符串到字符串,“替换”操作取决于顺序。地图是
NavigableMap吗?如果没有,如何订购确定? -
@Bohemian 好点......为了这个例子,它不相关的顺序(但是是的,它依赖于顺序)..你可能会想
List<Pair<String, String>>,所以顺序是该对在列表中的位置
标签: java string algorithm replace