Java で文字列内の複数の部分文字列を効率的に置換する
文字列内の複数の部分文字列を置換する必要がある場合、 string.replace() メソッドを繰り返し適用するという強引なアプローチに頼ります。ただし、大きな文字列の場合、または多数の文字列を操作する場合、これは非効率的になる可能性があります。
正規表現の利用
より効率的な解決策には、正規表現を利用することが含まれます。正規表現を使用すると、複雑な検索パターンを定義し、1 回の操作でテキスト変換を実行できます。
使用例
「」などのトークンを置き換えるシナリオを考えてみましょう。 �t%" および "verage%" の値はマップに保存されます。 Apache Commons Lang の StringUtils を使用すると、次のようにパターンとマッチャーを作成できます:
<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 中国語 Web サイトの他の関連記事を参照してください。