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

Windows Forms Discussion :

Extraire les mots d'un fichier texte


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Par défaut Extraire les mots d'un fichier texte
    Salut,

    Je dois réaliser un indexer de fichier texte.
    C'est à dire que pour un fichier texte, je dois en extraire tous les mots et les classer dans une base de données.
    Je commence à peine et déjà je coince.
    Je voudrais écrire une méthode qui permette d'extraire d'un fichier texte tous les mots pour les stocker dans un tableau.

    1) J'ai pensé utiliser la méthode Split mais comme la ponctuation d'un texte ne se limite pas qu'à des points ou des virgules, cette solution ne me convient pas. (je ne tiens pas à parcourir mon fichier autant de fois qu'il y a de signes de ponctuation).

    2) J'ai pensé à le faire à la main (j'ai une très bonne expérience en C mais je débute en C#) mais ça me semble pas trop correspondre à la logique dotnet.

    Quelqu'un aurait-il une solution élégante à proposer ?

    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    le split me semble pourtant une solution adequate

    Il te suffit de faire un truc du genre

    string result = tonStream.ReadLine(); dans ton fichier

    Puis ensuite, tu peux faire une fonction qui à partir d'une ligne , te sors un
    tableau de chaine, et voila

    The Monz, Toulouse

  3. #3
    Membre Expert Avatar de guitoux1
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 011
    Par défaut
    tu devrais pouvoir aussi utiliser les expressions régulières pour faire ça.
    A voir quel est le plus efficace (perso je penses qu'avec les expressions régulière, c'est plus performant, mais bon j'en suis pas certain non plus)

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par guitoux1
    tu devrais pouvoir aussi utiliser les expressions régulières pour faire ça.
    A voir quel est le plus efficace (perso je penses qu'avec les expressions régulière, c'est plus performant, mais bon j'en suis pas certain non plus)
    Je suis d'accord avec toi, une expression rationnelle serait plus simple et plus élégante.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    166
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 166
    Par défaut
    Pour l'instant j'ai fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    StreamReader sr = new StreamReader("my_texte.txt");
    string line = null;
    string delimiter = " .,;:\n\t\r";
     
    line = sr.ReadLine();
    string[] tab = line.Split(delimiter.ToCharArray());
    sr.Close();
    foreach (string word in tab)
    {
      Console.WriteLine(word);
    }
    Mon fichier "my_texte.txt" contient :
    Je devrais donc obtenir trois mots.
    J'obtiens en fait 4 mots.
    Il me compte ce qu'il y a entre le '.' et ' ' (donc rien) comme un mot :
    Je n'ai pas trop compris la solution avec les regexp. Ce n'est pas ça que j'ai fait là ?

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    De mémoire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    using System.Text.RegularExpressions;
     
    Regex exp = new Regex(@"\b\w+\b");
    foreach(Match m in exp.Matches(taChaineATraiter))
    {
         string value = m.Value; // Value contient chaque token
    }
    EDIT : Avec cette expression, la ponctuation n'est pas traitée, elle "disparait" des tokens. Tu peux bien sûr modifier l'expression pour prendre en compte la ponctuation.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

Discussions similaires

  1. Extraire les "champs" d'un fichier texte
    Par Bamba Aboubacar dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 05/11/2014, 17h31
  2. extraire les données d'un fichier texte
    Par klue_ dans le forum VBScript
    Réponses: 7
    Dernier message: 23/11/2008, 13h59
  3. extraire les données d'un fichier text vers une table access
    Par djatto dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/09/2008, 17h51
  4. Extraire les mots d'un texte
    Par krachik dans le forum C
    Réponses: 9
    Dernier message: 11/05/2006, 22h16
  5. Pour extraire les données d'un fichier texte
    Par Floch dans le forum Access
    Réponses: 2
    Dernier message: 02/05/2006, 15h01

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