RegExp

Résolu
coolkikou Messages postés 2 Date d'inscription dimanche 24 août 2003 Statut Membre Dernière intervention 4 septembre 2008 - 4 sept. 2008 à 12:32
coolkikou Messages postés 2 Date d'inscription dimanche 24 août 2003 Statut Membre Dernière intervention 4 septembre 2008 - 4 sept. 2008 à 15:30
Bonjour à tous,

Je travaille actuellement sur un petit projet ou je dois parser un fichier. Voici un extrait du code :
if ((match = monRegexp1.Match(ligne)).Success)
{
//traitement quelquonque
}
elseif
((match = monRegexp2.Match(ligne)).Success)
{
//traitement quelquonque
}

[...]

Sachant que j'ai une 50aine d'expressions, ca comment a faire beaucoup de if :( :(

Y a t il un moyen de donner ma 'ligne' a une collection de RegExp pour avoir en retour la RegExp qui match afin de faire le traitement associé ?

Dans l'idée ca serait ca :  maRegExpQuiMatch = CollectionDeRegExp.Match(ligne)

Merci pour vos réponses

Cdlt
---
Mathieu Pellegrino

2 réponses

billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
4 sept. 2008 à 13:26
Bonjour,

Personnellement, en considérant que tes traitements sont différents pour chaque expression régulière, je vois une solution:

Tu créé une classe abstraitre qui sera hérité par tous tes objets contenant les traitement. Exemple:
public abstract class RegExProcess
{
private Regex _reg;

public RegExProcess(Regex reg)
{
_reg = reg;
}

public Regex Reg
{
get { return _reg; }
}

public abstract void Execute();
}

Ensuite, il te suffit de créer chaque classe dérivant de cette dernière avec la méthode Execute() spécifique à la classe.

Puis, tu créé une classe collection de ta classe abstraite
Exemple:
public class RegExProcessList : List<RegExProcess>
{
//...
}

Il te suffira alors de faire dans ton code:
foreach(RegExProcess curRegExProcess in list)
{
if ((match = curRegExProcess.Reg.Match(ligne)).Success)
{
curRegExProcess.Execute();
}
}


Voila en gros mon idée.
Désolé s'il y a des fautes et pour les non-commentaires.

Je te laisse broder autour.

Bon courage,


Billou_13
3
coolkikou Messages postés 2 Date d'inscription dimanche 24 août 2003 Statut Membre Dernière intervention 4 septembre 2008
4 sept. 2008 à 15:30
Merci bcp je vais broder la dessus ^^
0
Rejoignez-nous