[c#] Exercice sur les traitements de string

Résolu/Fermé
Creutzou Messages postés 550 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 30 mai 2013 - Modifié par Creutzou le 15/11/2011 à 11:55
Creutzou Messages postés 550 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 30 mai 2013 - 17 nov. 2011 à 11:53
Bonjour,

on m'a donné un petit exo à faire en c#.

Je part d'un fichier texte, et je dois en sortir un fichier Excel.
Le fichier excel devra contenir 3 colonnes ( Numéro index, désignation, prix)

Le fichier texte est construit de maniere suivante :
Numéro - Désignation prix €

Le problème est que je ne sais pas trop par quel coté commencer...

je pense lire le fichier ligne par ligne et lorsque je rencontre le "-" séparer la chaine en deux.
Mais concernant la séparation de la désignation et du prix, seul le symbole monétaire(€) est présent à chaque fois, mais à la fin de la ligne.

Auriez vous une idée car je commence à sécher un peu :/
Si vous avez besoin de plus de précision , n'hésiter pas.


En vous remerciant d'avance.

ps: je ne demande pas une résolution toute faites, loin de là ! je voudrais comprendre ce que je fais.

4 réponses

Creutzou Messages postés 550 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 30 mai 2013 30
15 nov. 2011 à 12:34
Je me casse vraiment les dents, je dois avoir un problème de méthodologie.

J'ai oublié de préciser qu'il n'y a aucune taille fixe.
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
15 nov. 2011 à 12:50
Il y a plusieurs façon de traiter du texte, la plus simple si tu es sur de ton coup, serait de faire des Split('-').

Split(char) permet de diviser une chaîne à chaque fois que le caractère char apparaît. Ça renvoie donc un tableau des sous-chaînes.

Une façon plus complexe mais bien plus puissante est l'utilisation d'expression régulières pour découper ta chaîne.

Google tout ça si tu veux en apprendre plus :

C# Regex
C# Split string

0
Creutzou Messages postés 550 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 30 mai 2013 30
Modifié par Creutzou le 15/11/2011 à 14:16
J'avais déjà trouvé la fonction Split. J'essayais de me dépatouiller avec ça.
En revanche, jamais entendu parler des expressions régulières. Je m'y penche !

Merci
0
Creutzou Messages postés 550 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 30 mai 2013 30
15 nov. 2011 à 14:37
Les expressions régulieres sont un peu ...complexe je trouve.
Pourrais tu me dire si je procède bien ?
voici un exemple de mon fichier (il y a bien les retours à la ligne dedans )
1 - « Arquebusier du XVI è siècle. »
Gravure du XVIII è siècle. Planche provenant de
l'ouvrage de Jacques de Gheyn, « Maniement d'armes,
d'arquebuses, mousquets et piques ». 25 x 17,5 cm.
Sous verre. Cadre en bois.
100 / 150 €


J'ai donc procéder au découpage comme ceci :
* un caractère numérique [0-9]
* un tiret - *-
* une désignation [a-zA-Z0-9_+-+,+.]
* des chiffres ( eventuellement un "/") avec d'autre chifres [0-9]*/[0-9]
* un € *€


Ce qui nous donnerais
^[0-9]? /s*-?/s[a-zA-Z0-9_+-+,+.]?/r?/n[a-zA-Z0-9_+-+,+.]?/s[0-9]*/[0-9]*€$


Seulement je ne suis pas bien sure de moi.
Qu'en penses tu ?
0
Creutzou Messages postés 550 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 30 mai 2013 30
15 nov. 2011 à 14:44
je me suis basé la dessus pour la faire.
0
Creutzou Messages postés 550 Date d'inscription lundi 17 mai 2010 Statut Membre Dernière intervention 30 mai 2013 30
17 nov. 2011 à 11:53
Et bien en mélangeant Split et REGEX, ça fonctionne nickel ;)

Mille merci !
0