在 Java 中高效替換多個子字串
出於各種目的,需要替換字串中的多個子字串。雖然傳統的 string.replace 方法足以滿足簡單的情況,但它可能不足以處理大量字串或大量替換。
解決此問題的有效方法是利用 java.util.regex.Matcher 類別。這需要一些初始編譯時間,但事實證明對於大量輸入或重複搜尋模式是有益的。
考慮以下場景:
問題:取代多個標記(例如,「貓」和「飲料」)及其在給定範圍內的對應值(例如「加菲貓」和「咖啡」)
解決方案:
<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中文網其他相關文章!