问题:有一个字符串和映射,其中键 - 必须替换的符号,以及值 - 新符号而不是替换。
例如,假设有一个字符串 One, two, three, four
。我需要将 f
替换为 +
并将 w
替换为 -
等,以获得 One, t-o, three, +our
如何以最有效的方式做到这一点?我只找到了一个解决方案 - 迭代地图并为每个地图条目使用 string.replaceAll(k, v)
。有没有更有效的方法?
答案 0 :(得分:1)
我认为最简单的方法是创建 StringBuilder
以构建一个新字符串和一个具有所需匹配项的 Map
。
public static void main(String... args) {
String str = "One, two, three, four";
Map<Character, Character> map = Map.of('f', '+', 'w', '-');
String res = replace(str, map);
System.out.println(res); // One, t-o, three, +our
}
public static String replace(String str, Map<Character, Character> map) {
StringBuilder buf = new StringBuilder(str.length());
for (int i = 0; i < str.length(); i++)
buf.append(map.getOrDefault(str.charAt(i), str.charAt(i)));
return buf.toString();
}