Maison >Java >javaDidacticiel >Comment remplacer efficacement plusieurs sous-chaînes dans une chaîne Java ?

Comment remplacer efficacement plusieurs sous-chaînes dans une chaîne Java ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-03 23:21:30310parcourir

How to Efficiently Replace Multiple Substrings in a Java String?

Substitution efficace de chaînes en Java

Remplacer efficacement plusieurs sous-chaînes dans une chaîne est une tâche courante en programmation. Bien que l'approche par force brute consistant à utiliser String.replace() pour chaque substitution soit simple, elle peut s'avérer inefficace, en particulier pour les grandes chaînes ou lorsqu'il s'agit de nombreux remplacements.

Remplacement de sous-chaînes à l'aide d'expressions régulières

Une solution plus efficace consiste à utiliser des expressions régulières. En compilant un modèle qui correspond à tous les remplacements de sous-chaînes souhaités, vous pouvez remplacer plusieurs sous-chaînes à la fois.

Considérez l'exemple de code suivant, qui remplace les jetons d'une carte dans une chaîne de modèle à l'aide d'expressions régulières :

<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>

En utilisant des expressions régulières, vous pouvez améliorer considérablement l'efficacité des remplacements de plusieurs sous-chaînes, en particulier pour les chaînes d'entrée volumineuses ou complexes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn