ホームページ  >  記事  >  Java  >  Java 文字列内の複数の部分文字列を効率的に置換するにはどうすればよいですか?

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

Barbara Streisand
Barbara Streisandオリジナル
2024-11-03 23:21:30268ブラウズ

How to Efficiently Replace Multiple Substrings in a Java String?

Java での効率的な文字列置換

文字列内の複数の部分文字列を効率的に置換することは、プログラミングにおける一般的なタスクです。各置換に String.replace() を使用する総当り的なアプローチは簡単ですが、特に大きな文字列の場合や多数の置換を扱う場合には非効率的になる可能性があります。

正規表現を使用した部分文字列の置換

より効率的な解決策には、正規表現の使用が含まれます。必要なすべての部分文字列置換に一致するパターンをコンパイルすることで、複数の部分文字列を一度に置換できます。

次のコード例を考えてみましょう。これは、正規表現を使用してテンプレート文字列内のマップからトークンを置換します。

<code class="java">import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

...

// Tokens to replace
Map<String, String> tokens = new HashMap<>();
tokens.put("cat", "Garfield");
tokens.put("beverage", "coffee");

// Template string with tokens
String template = "%cat% really needs some %beverage%.";

// Create pattern to match tokens
String patternString = "%(" + StringUtils.join(tokens.keySet(), "|") + ")%";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(template);

// Replace tokens using Matcher
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
    matcher.appendReplacement(sb, tokens.get(matcher.group(1)));
}
matcher.appendTail(sb);

System.out.println(sb.toString()); // Prints the replaced string</code>

正規表現を使用すると、特に大規模または複雑な入力文字列の場合、複数の部分文字列の置換の効率を大幅に向上させることができます。

以上がJava 文字列内の複数の部分文字列を効率的に置換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。