DELPHI : Supprimer simplement une multitude de caractères

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 :

  1. texte := AnsiReplaceStr( texte, '<', '');
  2. 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;
  1. On commence par créer la Règle
  2. 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)

 

 

Laisser un commentaire