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

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

Linda Hamilton
Linda Hamiltonoriginal
2024-11-05 06:42:02921parcourir

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

Remplacer efficacement plusieurs sous-chaînes dans une chaîne en Java

Lorsque vous êtes confronté à la nécessité de remplacer plusieurs sous-chaînes dans une chaîne, il est tentant de recourir à l'approche par force brute consistant à appliquer à plusieurs reprises la méthode string.replace(). Cependant, cela peut s'avérer inefficace pour les grandes chaînes ou lorsque vous travaillez avec de nombreuses chaînes.

Exploiter les expressions régulières

Une solution plus efficace consiste à exploiter les expressions régulières. Les expressions régulières vous permettent de définir des modèles de recherche complexes et d'effectuer des transformations de texte en une seule opération.

Exemple d'utilisation

Considérez un scénario dans lequel vous souhaitez remplacer des jetons tels que " �t%" et "�verage%" avec des valeurs stockées dans une carte. À l'aide de StringUtils d'Apache Commons Lang, vous pouvez créer un modèle et un matcher comme suit :

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

Ensuite, vous pouvez utiliser le matcher pour rechercher toutes les occurrences des jetons et les remplacer par les valeurs correspondantes :

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

Avantages des expressions régulières

Une fois l'expression régulière compilée, la recherche dans la chaîne d'entrée est généralement très rapide. De plus, les expressions régulières offrent la flexibilité nécessaire pour gérer des modèles de recherche complexes, tels que ceux impliquant des parenthèses et des quantificateurs.

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