4rocky4
Messages postés55Date d'inscriptionmercredi 1 novembre 2006StatutMembreDernière intervention16 avril 2009
-
16 avril 2009 à 15:06
4rocky4
Messages postés55Date d'inscriptionmercredi 1 novembre 2006StatutMembreDernière intervention16 avril 2009
-
16 avril 2009 à 17:26
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 16 avril 2009 à 17:09
Euh c'est un bête split... !!!
Si ca commence pas par DEBUT, il faut adapter... par exemple
source = source.Substring(source.IndexOf(
"DEBUT"
));
Ou alors, s'il faut commencer à faire trop de teste, tu peux quand même utiliser les regex, à toi de voir...
MatchCollection mc = Regex.Matches(source, "(DEBUT)(.*?)(FIN)", RegexOptions.Singleline);
4rocky4
Messages postés55Date d'inscriptionmercredi 1 novembre 2006StatutMembreDernière intervention16 avril 2009 16 avril 2009 à 15:14
Bonjour tout le monde,
J'en ai plein le ... des Regex lol
voici mon problème/code :
string source = @"DEBUT aaa
aaa
aaa
FIN
DEBUT bbb
bbb
bbb
FIN
DEBUT ccc FIN
DEBUT ddd FIN";
Regex testo = new Regex(@"DEBUT(?<createContent>(.*\n)*FIN)");
MatchCollection m = testo.Matches(source);
Match ess1 = m[0];
Match ess2 = m[1];
Match ess3 = m[2];
4rocky4
Messages postés55Date d'inscriptionmercredi 1 novembre 2006StatutMembreDernière intervention16 avril 2009 16 avril 2009 à 15:45
En faite ma chaine de caractères est à la base dans un fichier.
Et il doit y avoir à peu près 80 "DEBUT ..... FIN" à récupérer pour, par la suite, les tester un par un puis pour certains, récupérer des éléments à l'intérieur.
Je ne connais pas l'exemple que tu m'as mis donc je ne sais pas si je pourrai faire ce que je veux par la suite.
J'ai toujours utilisé des expressions régulières auparavant.
Ce n'est pas possible de réaliser ce que je souhaite à l'aide d'une expression régulière ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 16 avril 2009 à 15:54
Si tu peux ne pas utiliser des regex, n'en utilises pas! L'équivalent regex est environ 150x plus lent dans ce cas...
Grossomodo ça donnerait environ ça: Regex.Split(source, @"DEBUT|FIN", RegexOption.Multiline)
Les regex, c'est seulement si la "méthode traditionnelle" est trop complexe...
4rocky4
Messages postés55Date d'inscriptionmercredi 1 novembre 2006StatutMembreDernière intervention16 avril 2009 16 avril 2009 à 16:54
Je pense qu'il y a une erreur dans la première solution :
source.Split(mew string[] { "DEBUT", "FIN" }, StringSplitOption.RemoveEmptyEntries);
Si ma chaîne de caractères est de :
string source = @"ZZZZZZZZ
XXXXXXX
DEBUT aaa
aaa
aaa
FIN
DEBUT bbb
bbb
bbb
FIN
DEBUT ccc FIN
DEBUT ddd FIN";
La première cellule de mon tableau contiendra :
ZZZZZZZZ
XXXXXXX
Apparemment, cette solution permet d'insérer dans un tableau le début de la chaîne de caractères jusqu'au premier DEBUT ou FIN. Pour la seconde, Il fait la même chose à partir de l'endroit où il s'est arrêté.