IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Probleme boucle récupération mot


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 1
    Par défaut Probleme boucle récupération mot
    Alors voilà mon problème du moment, je souhaiterais faire un programme qui aille chercher un fichier txt (contenant 6000 lignes) et récupérer certain mots. J'ai donc fait le programme en deux boucles, l'une d'abord permettant d'atteindre la partie qui nous intéresse en recherchant le mot clé/titre de cette partie puis une deuxieme boucle qui elle traitera la partie pour récupérer les mots qui nous intéresse.

    Le problème pour l'instant concerne la premiere boucle, en effet j'ai inscris vers la 4000e ligne un mot pour les tests et demander a cette boucle d'allez jusqu'ici avant que la deuxieme ne prenne le relai.
    Voici le code tout d'abord :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    StreamReader vartext = new StreamReader(@"le chemin d'accès du fichier");
    int counter = 0;
    Boolean trouve = false;
    String ligne1;
     
     while (trouve == false) // Le premier while cherche la zone de texte utile
    	        {
    	            ligne1 = vartext.ReadLine();
                    if (ligne1.Contains("le mot clé que j'ai inscris"))
    	                {
    		                trouve = true;
                            Console.WriteLine("trouvé !");
    	                }
                    counter++;
                   Console.WriteLine(counter);
                   Console.WriteLine(ligne1);
    	        }
    Le problème qui se pose, c'est que le programme en éxecution ne trouve jamais le mot clé, il lis les 6000 lignes du fichier txt et plante. Je pense que le problème vient de la condition if, peut etre meme du contains. Mais je ne comprends pas ce qui cloche, si vous pouviez m'aider ce serait cool :/

  2. #2
    Membre Expert
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 662
    Par défaut
    Bonjour,

    bizarre en effet il devrait trouvé le mot, le problème se situe peut être ailleurs, pourrais-tu nous montrer l'intégralité du code ?

    Aussi pour être sur que ta boucle ne se répète a l'infini au cas ou elle n'a rien trouvé, je te conseillerai de faire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
                StreamReader reader = new StreamReader("C:\\fichier.txt");
     
                string ligne;
                int count = 1;
     
                while (!reader.EndOfStream)
                {
                    ligne = reader.ReadLine();
     
                    if (ligne.Contains("mot clé"))
                    {
                        Console.WriteLine("Trouvé a la ligne " + count);
                        break;
                    }
     
                    count++;
                }
     
                reader.Close();

  3. #3
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Salut Erzegot,

    Est-ce que le pattern que tu cherche contient des char culture dependent comme des accents?
    Quand tu execute "ligne1.Contains("le mot clé que j'ai inscris")" dans ton debugger, ca return quoi?
    Si ca vient de l'encoding tu peux utiliser ca plutot: https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx (avec https://msdn.microsoft.com/en-us/lib...=vs.110).aspx)

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 27
    Par défaut suite des opérations
    J'ai finalement trouvé le problème mais merci tout de même pour vos réponses.

    J'aurais une petite question cependant si vous savez comment faire
    Je rappelle donc que chaque ligne ce compose comme ceci : "chaine de caractere" unnombre* unnombre* unnombre* unnombre*

    *totalement différent selon le fichier log, il n'a pas de valeur fixe car il est le résultat des statistiques d'un outil


    J'aimerais savoir comment récupérer uniquement le premier nombre donné, de la ligne concerné (que j'ai donc trouvé avec le code précédent)

    Une idée ?

  5. #5
    Membre averti
    Homme Profil pro
    Développeur DELPHI
    Inscrit en
    Février 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur DELPHI
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2011
    Messages : 26
    Par défaut
    Bonjour alkaz,

    Tu peux récupérer ce nombre en utilisant le Substring

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string maLigne = "1234";
    string premierNombre = maLigne.Substring(0, 1);
    Ce qui retournera 1
    Le premier chiffre correspond à l'index de départ et le second le nombre de caractères à récupérer.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 27
    Par défaut
    Merci beaucoup Frank !

    il y a cependant un probleme en effet je sais que le premier nombre est après l'espace qui sépare le nombre de la chaine de caractère (24 caractère pour la chaine plus précisément) mais le nombre lui peut varier entre un caractère comme quatre caractère.

    Comment faire comprendre au programme que je souhaite le premier nombre qui se trouve après l'espace séparant la chaine du nombre, et surtout je ne souhaite pas avoir les autres nombres séparer d'un espace après le premier !


    PS : Ce que je ne comprends pas dans le substring c'est qu'il n'accepte pas ce caractère "_" et plante lorsqu'il le lit. En effet je ne peut lui demander le caractère (20,21) car entre temps il y a un "_"

    Je sais pas si je me fais bien comprendre :/

Discussions similaires

  1. [Upload] probleme de récupération de fichier image
    Par BernardT dans le forum Langage
    Réponses: 2
    Dernier message: 15/11/2005, 01h12
  2. probleme avec le mot const et operateur==
    Par elekis dans le forum C++
    Réponses: 4
    Dernier message: 06/05/2005, 13h21
  3. [VB.NET] Problem de récupération de variable avec une DLL
    Par ludovic85 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 19/01/2005, 11h37
  4. [LG]Problême Boucle
    Par pierrOPSG dans le forum Langage
    Réponses: 1
    Dernier message: 29/04/2004, 16h48
  5. probleme identification et mot de passe root
    Par freums dans le forum Débuter
    Réponses: 5
    Dernier message: 19/09/2003, 17h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo