Bonjour,
J'ai une chaine du type: Prenez [M24_DIRECT]à droite[/M24_DIRECT]
Je veux supprimer tous les tags entre crochets, comme [M24_DIRECT].
Le framework fournit il une classe permettant ce traitement?
Merci d'avance,
Philippe
Version imprimable
Bonjour,
J'ai une chaine du type: Prenez [M24_DIRECT]à droite[/M24_DIRECT]
Je veux supprimer tous les tags entre crochets, comme [M24_DIRECT].
Le framework fournit il une classe permettant ce traitement?
Merci d'avance,
Philippe
Oui, tu peux utiliser une expression rationnelle (Regex) et effectuer un remplacement de caractères. Il juste dans ton cas remplacer cette chaine par rien.
Tu peux te baser sur une expression de type :
Cette expression sélectionne au plus proche les textes entre crochets.Code:\[.*?\]
Voici le code complet :
Code:
1
2
3
4
5 string pattern = @"\[.*?\]"; Regex rgx = new Regex(pattern); string inputStr = taChaineANettoyer; string outputStr = rgx.Replace(inputStr, "");
J'aurais tendance à utiliser également le remplacement avec les expressions régulières, mais en gérant des groupes pour les balises ouvrantes/fermantes. Seul défaut, ca ne permettra pas de gérer des balises imbriquées, il faudra boucler pour ça ;)
Code:
1
2
3
4
5 string input = "Prenez [M24_DIRECT]à droite[/M24_DIRECT] puis [M23_DIRECT]à gauche[/M23_DIRECT]"; // On enlève les balises string final = Regex.Replace(input, @"\[(.*?)\](?<contenu>[^\[\]]*)\[/\1\]", "${contenu}"); // Par contre cette chaine ne pourrait être traitée ainsi string input = "Prenez [M24_DIRECT]à droite puis [M23_DIRECT]à gauche[/M23_DIRECT][/M24_DIRECT]
Merci, ça marche super bien!