La méthode appendReplacement() travaille conjointement avec la méthode appendTail() pour le remplacement d'occurrences au sein d'un objet StringBuffer.
La méthode appendReplacement() exécute des remplacements. La méthode appendTail() doit être appelée après une ou plusieurs invocations de la méthode appendReplacement() afin de copier le reste de la chaîne de caractères cible.
Si cette méthode n'était pas invoquée après des opérations de remplacement, alors la chaîne de caractères résultantes ne serait pas complète.
Pattern modele = Pattern.compile("x{3}"); Matcher correspondance = modele.matcher("abcxxxabcxxxabcxxx"); StringBuffer chaine = new StringBuffer(); while (correspondance.find()) { correspondance.appendReplacement(chaine, "def"); } System.out.println(chaine.toString()); correspondance.appendTail(chaine); System.out.println(chaine.toString());
La méthode utilitaire quoteReplacement() retourne une chaîne de caractères de remplacement destinée à être utiliser dans la méthode appendReplacement(). Les éventuels signes '\' et '$' de la chaîne passée en argument, n'auront aucune signfication particullière dans la chaîne de caractères résultante.
Exemple [voir]String litteral = Matcher.quoteReplacement("\\w+$");
import java.util.regexp.Matcher; import java.util.regexp.Pattern; public class Remplacement { public static void main(String[] args) { String cible = "Elle a été citée à la bourse de Tikyi à l'heure de la cliture vers 18h00."; String regexp = "i"; String remplacement = Matcher.quoteReplacement("\\w"); Pattern modele = Pattern.compile(regexp); Matcher recherche = modele.matcher(cible); remplacer(recherche, remplacement); recherche.reset(); remplacer(recherche, "o"); } public static void remplacer(Matcher recherche, String remplacement) { StringBuffer resultat = new StringBuffer(); System.out.println(recherche.pattern().pattern()); while(recherche.find()){ String chaine = recherche.group(); int debut = recherche.start(); int fin = recherche.end(); afficher(recherche.pattern().pattern(), chaine, debut, fin); recherche.appendReplacement(resultat, remplacement); } System.out.println(resultat.toString()); recherche.appendTail(resultat); System.out.println(resultat.toString()); } public static void afficher(String regexp, String chaine, int debut, int fin) { System.out.println("Une occurrence a été trouvée"); System.out.println("Modèle : " + regexp); System.out.println("Occurrence : " + chaine); System.out.println("Début : " + debut); System.out.println("Fin : " + fin + "\n"); } } |