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 中国語 Web サイトの他の関連記事を参照してください。