Lire certains mots d'un fichier texte et les stocker pour les mettre dans une ba [Résolu]

cs_dreamkill 14 Messages postés samedi 17 décembre 2005Date d'inscription 19 juin 2009 Dernière intervention - 19 mai 2009 à 20:01 - Dernière réponse : cs_dreamkill 14 Messages postés samedi 17 décembre 2005Date d'inscription 19 juin 2009 Dernière intervention
- 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
Afficher la suite 

8 réponses

Répondre au sujet
cs_dreamkill 14 Messages postés samedi 17 décembre 2005Date d'inscription 19 juin 2009 Dernière intervention - 2 juin 2009 à 10:38
+3
Utile
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 !
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_dreamkill
rours 61 Messages postés dimanche 5 novembre 2000Date d'inscription 24 février 2010 Dernière intervention - 20 mai 2009 à 10:45
0
Utile
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.  
Commenter la réponse de rours
cs_Robert33 835 Messages postés samedi 15 novembre 2008Date d'inscription 14 janvier 2017 Dernière intervention - 24 mai 2009 à 00:41
0
Utile
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
Commenter la réponse de cs_Robert33
cs_dreamkill 14 Messages postés samedi 17 décembre 2005Date d'inscription 19 juin 2009 Dernière intervention - 26 mai 2009 à 11:15
0
Utile
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
Commenter la réponse de cs_dreamkill
cs_Robert33 835 Messages postés samedi 15 novembre 2008Date d'inscription 14 janvier 2017 Dernière intervention - 28 mai 2009 à 20:31
0
Utile
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!
Commenter la réponse de cs_Robert33
cs_dreamkill 14 Messages postés samedi 17 décembre 2005Date d'inscription 19 juin 2009 Dernière intervention - 1 juin 2009 à 09:43
0
Utile
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();   }
Commenter la réponse de cs_dreamkill
cs_dreamkill 14 Messages postés samedi 17 décembre 2005Date d'inscription 19 juin 2009 Dernière intervention - 1 juin 2009 à 16:45
0
Utile
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
Commenter la réponse de cs_dreamkill
cs_Robert33 835 Messages postés samedi 15 novembre 2008Date d'inscription 14 janvier 2017 Dernière intervention - 1 juin 2009 à 18:41
0
Utile
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!
Commenter la réponse de cs_Robert33

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.