Maison >Java >javaDidacticiel >Comment remplacer efficacement plusieurs sous-chaînes dans une chaîne Java ?
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!