gpt4 book ai didi

java - 独立(并行)替换字符串中的一组子字符串

转载 作者:行者123 更新时间:2023-12-02 03:38:08 30 4
gpt4 key购买 nike

//值数组的格式为 { "var1", "val1", "var2", "val2",.. }

 public static String replaceMethod(String template, String... values) {
String p = template;
for (int i = 0; i < values.length; i += 2) {
p = p.replace(values[i], values[i+1]);
}

return populatedTemplate;
}

此方法将一组子字符串替换为字符串中的相应值。例如:- 字符串 => abcd 值的子字符串数组 ["a","b","c","d"] 这意味着将 'a' 替换为 'b',将 'b' 替换为 'c'。

那么,现在问题来了。

1.我的上述实现在第一个循环中将 'a' 替换为 'b' ,然后在第二个循环中,将 'b' 替换为 'c' ,使最终字符串为“cccd”。但我希望输出为“bccd”。系列替换使用先前替换的字符串来进一步工作。有没有一种方法可以更有效地并行替换所有子字符串。

2.如何使用Map而不是数组(上述方法的第二个参数)来实现上述方法? Map 更好,还是上面的实现更好?

最佳答案

您最好使用映射并迭代模板中的每个字符。这样您就可以避免在同一索引位置进行多次替换。

String template = "abcd";
StringBuilder populatedTemplate = new StringBuilder();
HashMap<Character, Character> map = new HashMap<>();
map.put('a', 'b');
map.put('b', 'c');
for (int i = 0; i < template.length(); i++) {
populatedTemplate.append(
map.getOrDefault(template.charAt(i), template.charAt(i)));
}
System.out.println(populatedTemplate);

与 OP 发布的解决方案相比,此解决方案的一些专业论点。

  • 避免在同一索引位置进行多次替换,第一步将 a 替换为 b,第二步将 b 替换为 c 这会导致 a 意外有效地替换为 c
  • 仅在模板上迭代一次
  • 不要为每个替换对创建一个新的 String 对象,因为它本来就是这里的 p = p.replace(values[i], values[i+1]) ;

关于java - 独立(并行)替换字符串中的一组子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37187433/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com