ホームページ > Java > &#&チュートリアル > Java 文字列内の複数の部分文字列を効率的に置換するにはどうすればよいですか?

Java 文字列内の複数の部分文字列を効率的に置換するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-05 06:42:02
オリジナル
947 人が閲覧しました

How Can I Efficiently Replace Multiple Substrings in a Java String?

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート