在Java 中高效替換字串中的多個子字串
當需要替換字串中的多個子字串時,很容易訴諸重複應用string.replace() 方法的強力方法。但是,對於大型字串或處理大量字串時,這可能效率低下。
利用正規表示式
更有效的解決方案涉及利用正規表示式。正規表示式可讓您定義複雜的搜尋模式並在單一操作中執行文字轉換。
範例用法
考慮一個場景,您想要替換諸如“”之類的標記�t%”和“�verage%”,其值儲存在地圖中。對應的值:
<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);</code>
<code class="java">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中文網其他相關文章!