Remplacement efficace de plusieurs sous-chaînes en Java
Le remplacement de plusieurs sous-chaînes dans une chaîne est nécessaire à diverses fins. Bien que la méthode string.replace conventionnelle puisse suffire pour des cas simples, elle peut s'avérer insuffisante pour gérer des chaînes volumineuses ou de nombreux remplacements.
Une approche efficace pour résoudre ce problème consiste à exploiter la classe java.util.regex.Matcher . Cela nécessite un certain temps de compilation initiale, mais s'avère bénéfique pour les entrées volumineuses ou les modèles de recherche répétitifs.
Considérez le scénario suivant :
Problème : Remplacez plusieurs jetons (par exemple, " chat" et "boisson") avec leurs valeurs correspondantes (par exemple, "Garfield" et "café") dans une chaîne donnée.
Solution :
<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); StringBuffer sb = new StringBuffer(); while(matcher.find()) { matcher.appendReplacement(sb, tokens.get(matcher.group(1))); } matcher.appendTail(sb); System.out.println(sb.toString());</code>
En utilisant cette approche, le coût de compilation initial dépasse ses avantages pour les petites tailles d'entrée ou les recherches qui changent fréquemment motifs. Cependant, cela améliore considérablement l'efficacité lorsque vous travaillez avec des chaînes étendues ou de nombreux remplacements.
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!