在 Java 中高效替换多个子字符串
出于各种目的,需要替换字符串中的多个子字符串。虽然传统的 string.replace 方法足以满足简单的情况,但它可能不足以处理大量字符串或大量替换。
解决此问题的有效方法是利用 java.util.regex.Matcher 类。这需要一些初始编译时间,但事实证明对于大量输入或重复搜索模式是有益的。
考虑以下场景:
问题:替换多个标记(例如,“ cat" 和 "beverage") 以及给定字符串中相应的值(例如,"Garfield" 和 "coffee")。
解决方案:
<code class="java">Map<String, String> tokens = new HashMap<>(); tokens.put("cat", "Garfield"); tokens.put("beverage", "coffee"); String template = "%cat% really needs some %beverage%."; // Create pattern of the format "%(cat|beverage)%" String patternString = "%(" + StringUtils.join(tokens.keySet(), "|") + ")%"; Pattern pattern = Pattern.compile(patternString); Matcher matcher = pattern.matcher(template); StringBuffer sb = new StringBuffer(); while(matcher.find()) { matcher.appendReplacement(sb, tokens.get(matcher.group(1))); } matcher.appendTail(sb); System.out.println(sb.toString());</code>
通过使用这种方法,初始编译成本超过了它对于小输入大小或频繁更改搜索的好处模式。然而,在处理大量字符串或大量替换时,它会显着提高效率。
以上是Java中如何高效替换多个子字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!