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 :

Manipulations dans un fichier texte


Sujet :

C#

  1. #1
    Candidat au Club
    Femme Profil pro
    student
    Inscrit en
    Février 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Australie

    Informations professionnelles :
    Activité : student
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2016
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Manipulations dans un fichier texte
    Bonjour a tous,

    Je suis très débutante donc c'est surement une question qui parait un peu stupide pour certains donc je fais appel a votre tolérance :D. J'ai commence a apprendre c# il y a 5 semaines semaines en ligne (et en anglais car je fais mes études en Australie).
    J'utilise visual studio 2015.
    J'ai un fichier txt présenté comme ceci : Pays, Capitale, Population(en chiffre). C'est donc une grande liste triée dans l'ordre alphabétique selon le nom du pays.

    1/Je dois trouver une méthode ou lorsque je choisis une lettre, tous les pays commençant par cette lettre apparaissent dans la console. Par exemple si je choisi la lettre "p", tous les pays en "p" seront sensé s’afficher.

    2/Je dois trouver une méthode ou lorsque je choisis une lettre, toutes les capitales commençant par cette lettre apparaissent dans la console.

    C'est dans le cadre de mes études alors je ne recherche pas de réponse toute faite mais plutôt quelques indices sur les formules que je suis sensée utiliser. J'aimerais vraiment comprendre le raisonnement. Jusqu’à maintenant mes leçons étaient simples mais maintenant je me retrouve sans aucune idée de comment je suis sensée faire! Help!

    J'imagine que je dois 'séparer' les pays (string), capitales(string), et population(int), mais comment faire quand tout est dans un fichier texte???

    Ça fait un bon moment que je cherche et ce n'est jamais vraiment le même cas que le mien donc pas applicable.

    Merci d'avance pour votre aide ;)

  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
    Points : 5 195
    Points
    5 195
    Par défaut
    bonjour

    la première chose à faire est de mettre le contenu de ton fichier dans une List (List<>) et que l'objet contenu dans cette liste soit une classe

    Par exemple, une classe du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class PaysItem
    {
         public string Pays {get;set;}
         public string Capitale{get;set;}
         public double Population{get;set;}
    }
    Tu vas donc lire chaque ligne de ton fichier pour créer un objet PaysItem que tu mettras dans ta liste.

    Une fois que tu as ta liste, tu peux faire une recherche de plusieurs façon...

    Une approche "basique" serait la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public List<PaysItem> GetPaysWithFirstLetter(string chaine)
    {
         List<PaysItem> result = new List<PaysItem>;
         foreach(PaysItem p in myList)  // myList étant la liste remplie lors de la lecture du fichier...
         {
                if(p.Pays.StartsWith(chaine)
                {
                        result.Add(p);
                }
         }
        return result;
    }
    A noter que le StartsWith permet de ne pas se focaliser uniquement sur la première lettre mais sur l'ensemble des premières lettres...

    Tu peux faire la même chose avec les capitales, etc...

    Après, tu peux aussi faire une requete en Linq (mais c'est peut-être un peu plus "abscon" pour toi) genre:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    List<PaysItem> result = myList.Where(p=>p.Pays.StartsWith(chaine)).toList();
    Après, il y a surement pleins d'autres solutions mais c'est deux proposées me semblent couvrir ton besoin et permettent de progresser et de découvrir les objets list...
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 123
    Points : 356
    Points
    356
    Par défaut
    Bonjour,

    Une bonne méthode je pense, serait de créer une classe "Pays" avec les propriétés "Nom", "Capitale", "Population", etc...
    Ensuite tu lis la totalité de ton fichier ligne par ligne et pour chaque ligne tu sépares tes données par un split sur la virgule.
    Tu mets les données récupérées dans un objet "Pays" que tu ajoutes à une variable liste de pays globale à ton application (private List<Pays> ...)
    Tu disposes ensuite de Linq pour te servir de cette liste comme d'une petite base de données.

    Je ne te mets aucun code tout fait comme tu l'as souhaité.


    Cordialement


    EDIT : theMonz31 à répondu entre temps et de meilleure façon

  4. #4
    Candidat au Club
    Femme Profil pro
    student
    Inscrit en
    Février 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Australie

    Informations professionnelles :
    Activité : student
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Février 2016
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup à vous d'avoir pris le temps de me répondre et m'aider! J'apprécie vraiment! Je vais me remettre au boulot de ce pas!!

Discussions similaires

  1. Réponses: 6
    Dernier message: 05/05/2010, 10h18
  2. [BATCH] Manipulation dans un fichier texte
    Par Bloodscalp dans le forum Windows
    Réponses: 2
    Dernier message: 13/09/2006, 15h49
  3. Réponses: 3
    Dernier message: 22/02/2004, 20h09
  4. [LG]rechercher dans un fichier texte
    Par BadFox dans le forum Langage
    Réponses: 11
    Dernier message: 01/12/2003, 15h57
  5. recherche de doublons dans un fichier texte
    Par portu dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 07/10/2003, 14h13

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