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!