Comment supprimer en une seule ligne de code une multitude de caractères dans un texte ?
Grâce aux expressions régulières et à la fonction Regex.Replace
- Je veux par exemple supprimer tous les crochets < et > d’un texte
Je peux faire une double passe grâce à la bibliothèque StrUtils avec sa fonction AnsiReplaceStr :
-
texte := AnsiReplaceStr( texte, '<', '');
-
texte := AnsiReplaceStr( texte, '>', '');
- Mais ça fait 2 lignes ce qui est très fââââtiguant
REGEX permet de concentrer de multiples suppressions grâce à sa bibliothèque System.regularexpressions et sa fonction Tregex.Replace
texte := Tregex.Replace( texte , '[<>]', '');
On peut mettre autant de caractères qu’on veut entre les balises [ et ]
Pour ceux qui aiment compliquer les choses, on peut écrire la même routine sur plusieurs lignes :
var Regex : Tregex; begin regex := Tregex.Create ('[<>']): texte := regex.Replace (texte, ''); end;
- On commence par créer la Règle
- Puis on applique la fonction de Remplacement.
A noter que REGEX est un “Objet” spécial
- Il peut être utilisé directement : Tregex.Replace
- On peut créer une nouvelle instance de l’objet Tregex.Create
- Sa destruction est automatique (Regex.Free est inutile)