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

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

仇建茗
2023-03-14

问题:有一个字符串和映射,其中键-符号必须被替换,而值-新符号代替替换。

例如,假设有一个字符串,一、二、三、四。我需要用替换,用替换,用-替换,等等,得到一,t-o,三,我们的

如何以最有效的方式进行?我只找到了一个解决方案——迭代map,并为每个map条目使用字符串。全部替换(k,v)。有没有更有效的方法?

共有1个答案

张逸清
2023-03-14

我认为最简单的方法是创建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();
}
 类似资料:
  • 问题内容: 我正在编写一个小型JAVA程序,该程序: 将文本作为字符串 需要2个字符数组 我试图做的事情听起来像是“查找并替换”,但是并不相同,因此我认为清除它很重要。 无论如何,我想获取此文本,查找第一个数组中的任何字符是否与文本中的字符匹配,如果是,则将其替换为第二个字符数组中的匹配字符(根据索引)。 我将举一个例子来说明:假设我的文本(字符串)是:“ java很棒!”;我有2个数组(char

  • 问题内容: 用JavaScript替换字符串中所有字符串/字符实例的最快方法是什么?A ,- 循环,正则表达式? 问题答案: 最简单的方法是使用带有flag 的正则表达式替换所有实例: 这将替换所有出现的与字符串中。如果只有一个字符串,则可以将其转换为RegExp对象,如下所示:

  • 问题内容: 我需要替换一些字符,如下所示:,… 我编码如下,但是我想应该有一些更好的方法。有什么提示吗? 问题答案: 替换两个字符 我给当前答案中的所有方法加上了一个额外的时间。 使用输入字符串并替换和,最快的方法是将替换链接在一起,如下所示:。 每个功能的时间: a)1000000次循环,每个循环最好为3:1.47 s b)1000000个循环,每个循环的最佳时间为3:1.51μs c)1000

  • 我有一个作为字符串传入的句子,我正在对单词“and”进行替换,我想用“”替换它。它并没有用空白代替“和”。下面是我的逻辑示例。当我调试这个的时候,逻辑就落在句子里了。代替 这里有我遗漏的东西吗。

  • 问题内容: 我有一个用逗号分隔的产品列表,并且由于该项目列表已被新产品项目替换,因此我试图用新产品项目列表来修改此CSV列表。 我正在尝试使用split fn转换为行,然后替换这些值,然后再次将列转换为行。还有其他可能吗? 输出为: 问题答案: 将您的逗号分隔列表转换为XML。使用数字表XQuery和获取具有它们在字符串中的位置的单独ID。使用带有to和order by的技巧构建逗号分隔的字符串。

  • 问题内容: 我试图遍历一个字符数组,并将字符串中的该字符替换为另一个数组中的并行字符。 这是我得到的例子: 它总是输出相同的字符串,没有替换。 我也尝试使用: 和replaceAll方法。 有什么建议? 问题答案: 字符串在Java中是不可变的。不会 更改 您调用它的字符串-它会 返回 更改后的新字符串。所以你要: (对于要在其上“显示”更改的 所有 方法,这都是不变的,因此也是如此。)