[C#] Parsing de texte

Bonjour,
Dans le cadre d’un programme pour mon boulot, je cherche à découper un fichier texte en plusieurs morceaux.
Le texte se présente en gros comme ça :

[code]START_SECTION type1
  param1                                      “M1”
  param2                                       4
  param3                                      “Y”
  param4                                        0.000000 0.000000
END_SECTION

START_SECTION type1
  param1                                      “M2”
  param2                                       7
  param3                                      “N”
  param4                                        0.000000 0.000000
END_SECTION

START_SECTION type2
  param5                                        “M1”
  param6                                        1
  param7                                        "R"
END_SECTION

START_SECTION type2
  param5                                        “M2”
  param6                                        1
  param7                                        "B"
END_SECTION

etc…[/code]
C’est à dire qu’il y a plusieurs sections différentes n’ayant pas le même nombre de paramètres, et un type de section ne s’applique qu’à un item (M1 en est un, M2 un autre).
Mon problème est que je ne sais pas comment découper ce texte afin de pouvoir créer une collection d’objets contenant le nom de l’item considéré et tous les paramètres qui s’y rattachent.
ex:
objet1.item = "M1"
objet1.param2 = 4
objet1.param3 = “Y”

objet1.param7 = “R”

Je ne sais pas trop comment dire : réunis dans un tableau de strings toutes les SECTION de type “type1”. Une fois cela fait, ça devrait être facile.
Quelqu’un a une idée pour me permettre de démarrer ? Regex ? Split ? Substring ?

lex ?

string.indexof, substring et apres regex sur les differentes parties je dirais. Ou alors regex partout, a toi de voir.

[quote name=‘LeBaronNoir’ date=’ 4 Apr 2005, 20:52’]lex ?
[right][post=“347117”]<{POST_SNAPBACK}>[/post][/right][/quote]
C’est pas un peu utiliser un fusil pour tuer une mouche ? Au pire je fais une lecture ligne par ligne et je déclenche sur “START_SECTION”…

Désolé, c’est un projet de compilation qui me monte un peu à la tête.

[quote name=‘GloP’ date=’ 4 Apr 2005, 21:45’]string.indexof, substring et apres regex sur les differentes parties je dirais. Ou alors regex partout, a toi de voir.
[right][post=“347138”]<{POST_SNAPBACK}>[/post][/right][/quote]
Si je veux utiliser string.indexof, tu me conseilles de le relancer tant qu’il est != -1 à partir de l’index retourné précédent + 1 ?

Pour regex, j’arrive pas à voir comment l’utiliser ici ?

Expresso d’un côté, un bouquin de l’autre, tu devrais t’en sortir avec les regex.

Je suis pas un gros gros spécialiste des regex (en particulier côté optimisation) donc je laisse parler les experts.

Bon je ne connais pas comment marche l’ensemble de ton appli, mais c’est typiquement le genre de choses ou tu gagnerai du temps en mettant ton fichier texte au format xml, parce qu’ensuite, tu fais ce que tu veux très facilement avec.
Enfin je dis ça, je dis rien moi :stuck_out_tongue:

[quote name=‹ BodySplash › date=’ 5 Apr 2005, 13:19’]Bon je ne connais pas comment marche l’ensemble de ton appli, mais c’est typiquement le genre de choses ou tu gagnerai du temps en mettant ton fichier texte au format xml, parce qu’ensuite, tu fais ce que tu veux très facilement avec.
Enfin je dis ça, je dis rien moi :stuck_out_tongue:
[right][post=« 347309 »]<{POST_SNAPBACK}>[/post][/right][/quote]
Ben en fait, il faut que je prenne ce format texte, que je change certaines valeur suivant le user input, puis que je recrée le fichier texte dans sa forme initiale avec les nouvelles valeurs.
Donc a priori, passer par du XML ne m’aiderait pas je pense.
Merci pour le lien vers Expresso :stuck_out_tongue:

Moi j’aime bien over-engineerer, alors je ferai une classe sectionCollection, qui contient une collection de sections donc, qui sont des collections de params…
Et un serializer/de-serializer ‹ custom › qui fasse ton format de fichier :stuck_out_tongue:

Apres, tu fais sectionCollection.Load(fichier), tu as direct tes objects, tu fais mumuse, et save().

Mais si il fallait faire vite, une boucle avec des indexOf pour passer de sections en sections, et une regex pour extraire les parametres.