用 map 中的值替换 String 中的符号的最有效方法是什么?

时间:2021-06-14 08:00:08

标签: java string

问题:有一个字符串和映射,其中键 - 必须替换的符号,以及值 - 新符号而不是替换。

例如,假设有一个字符串 One, two, three, four。我需要将 f 替换为 + 并将 w 替换为 - 等,以获得 One, t-o, three, +our

如何以最有效的方式做到这一点?我只找到了一个解决方案 - 迭代地图并为每个地图条目使用 string.replaceAll(k, v)。有没有更有效的方法?

1 个答案:

答案 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();
}
相关问题