Lire certains mots d'un fichier texte et les stocker pour les mettre dans une ba

Résolu
cs_dreamkill Messages postés 14 Date d'inscription samedi 17 décembre 2005 Statut Membre Dernière intervention 19 juin 2009 - 19 mai 2009 à 20:01
cs_dreamkill Messages postés 14 Date d'inscription samedi 17 décembre 2005 Statut Membre Dernière intervention 19 juin 2009 - 2 juin 2009 à 10:38
Bonjour,
J'aurais besoin d'un petit coup de pouce parce que même en faisant le tour des sites web je n'ai pas trouvé de réponses à mon problème.
Je vous explique mon problème.
J'ai un fichier texte dans lequel il y a des données écrites dans ce style là :

Nom : Jean Claude
Prénom : Duss
Age : 21

Je voudrais récupérer les infos se trouvant après les ":" pour ensuite les stocker dans une base de données ( SQL server)
Je ne sais pas si je dois d'abord stocker ces infos dans des variables ou un tableau ?

Merci d'avance pour votre aide

8 réponses

cs_dreamkill Messages postés 14 Date d'inscription samedi 17 décembre 2005 Statut Membre Dernière intervention 19 juin 2009 1
2 juin 2009 à 10:38
C'est bon j'ai trouvé comment résoudre mon problème,
il fallait que j'effectue un petit test "if" pour afficher tab[1]

il manquait ces lignes après l'affichage de tab[0] :




if

(tab.Length > 1)



{




Console

.WriteLine(tab[1]);






}

Un grand merci pour ton aide !
3
rours Messages postés 61 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 24 février 2010
20 mai 2009 à 10:45
Bonjour.

déja un bon moyen est d'utiliser la méthode split.
En faisant readline ... split(':') ça découpe ta ligne avec comme séparateur ":".

donc si tu sotck ça dans une liste par exemple, pour ta ligne 1 tu vas avoir : 

nom | Jean Claude

Ensuite soit tu fais un test pour voir si tu trouves les mots "nom", "prenom" etc .. et tu ne les prends pas comptes.
Soit pour chaque ligne tu n'écrit pas le 1ier élément de ta ligne (ça doit se faire).

En gros voila.  
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
24 mai 2009 à 00:41
Bonsoir,



En fait tout dépend du format de ton fichier texte.
Est-ce que les balises (Nom, Prenom ...) sont toujours présentes et bien orthographiée (casse respectée)?
Est-ce que le format (position des ':' et des espaces) est toujours respecté?
y a t'il un séparateur entre les groupes de données?




l'utilisation de Regex peut permetre l'analyse d'un tel fichier, notamment si la casse et les accents ne sont pas toujours respectés.
Par exemple, l'expression "

"^nom ?: ?(?<Name>.*)\r\nPr.nom ?: ?(?<Lastname>.*)\r\nage ?: ?(?.*)\r\n--"
Permet de retrouver ce que tu recheches, du momment que les blocs de données sont séparées par "--"



Si le fichier contient:

Nom : Jean Claude
Prénom : Duss
Age : 21
0
cs_dreamkill Messages postés 14 Date d'inscription samedi 17 décembre 2005 Statut Membre Dernière intervention 19 juin 2009 1
26 mai 2009 à 11:15
Merci pour cette réponse très détaillé.
Cela se rapproche fortement de ce que j'essai de faire, toutefois mes informations ne se trouve pas dans un même fichier.
C'est à dire que je récupère des fichiers avec les même balises et les mêmes données à l'interieurs toujours écrit de la même facon
J'aurais par exemple :
Fichier a.txt
Nom : Duss
Prenom : Jean Claude
Age : 21

Fichier b.txt
Nom : Morin
Prenom : Bernard
Age : 24

etc..

donc je ne sais pas si jdois utliser Regex quand même ?
Et proceder de la manière que vous m'avez décrite?

Merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
28 mai 2009 à 20:31
Bonsoir

Bien sûr tu pêux utiliser un Regex sur chaque fichier, ça marche, on peut même écrire un Regex qui découperait une chaine en Clef/valeur, utilsé ligne par ligne. 
mais dans ce cas ce n'est pas la méthode conseillée.
Si tes fichiers sont tous identiques et si les balises sont toujours correctement formatées alors il vaut mieux une analyse plus conventionelle, se sera plus rapide.
utilise donc plutot un Split comme la proposé rours pour découper tes lignes tu obtiendra 2 chaines la clef et la valeur.

bon code..
C# is amazing, enjoy it!
0
cs_dreamkill Messages postés 14 Date d'inscription samedi 17 décembre 2005 Statut Membre Dernière intervention 19 juin 2009 1
1 juin 2009 à 09:43
Bonjour,
J'ai essayé la méthode avec le split et une arraylist mais j'ai une erreur :
" l'index se trouve en dehors des limites du tableau"
Comment faire pour enlever cette erreur ?

voici mon code
merci

string [] tab;

string ligne =
null;

ArrayList donnees =
new
ArrayList();

char[] sep = {
':' }; 

StreamReader fluxInfos =
null;

   try   {

      using (fluxInfos =
new
StreamReader(
@"D:\Gestion_Licence\test.txt"))          {

         ligne = fluxInfos.ReadLine();

         while (ligne !=
null)            {

            tab = ligne.Split(sep);

            donnees.Add(tab[1].Trim());

            }

            fluxInfos.Close();

         // Affichage du fichier texte

         /*while (ligne != null)          {

         Console.WriteLine(ligne);

         ligne = fluxInfos.ReadLine();

         }

         System.Console.ReadKey(); */

         }

         }

catch (
Exception e) {

      Console.WriteLine(
"L'erreur suivante s'est produite : " + e.Message);      System.

Console.ReadKey();   }
0
cs_dreamkill Messages postés 14 Date d'inscription samedi 17 décembre 2005 Statut Membre Dernière intervention 19 juin 2009 1
1 juin 2009 à 16:45
Je ne comprend pas parce que l'affichage du tableau marche lors que je fais tab[0] ;
j'affiche donc les mots avant ":" mais pour laffichage de tab[0] j'obtient l'erreur
"l'index est en dehors de la taille du tableau " ?
comment faire pour corriger cette erreur ?
Merci
0
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
1 juin 2009 à 18:41
Bonjour

C'est que pour la ligne en cours il n'y a pas les 2 elements séparés par un ':'
Essaies d'afficher la ligne lue sur l'erreur.
tu dois également tester le retour du split, pour être certain d'avoir au moins 2 éléménts (propriété Length du tableau).

C# is amazing, enjoy it!
0
Rejoignez-nous