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 :

Filtrage d'informations d'un TXT grâce a un délimiteur


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2018
    Messages : 10
    Points : 1
    Points
    1
    Par défaut Filtrage d'informations d'un TXT grâce a un délimiteur
    Bonsoir,

    Voilà tout, je débute en C# et je m'amuse à faire des tools en tout genre.
    Et voilà, enfaite j'aimerais filtrer 2 informations pour pouvoir les retranscrire sur une ListView.

    Schèma:

    - TXT sous forme (mail:pass) donc le délimiteur et le : qui sépare le mail du mot de passe.
    - L'utilisateur importe le fichier.
    - Le mail ce met dans la colonne MAIL, et le mot de passe ce met dans la colonne PASS.

    Actuellement, j'ai trouver sur Internet aucune façon de le faire, uniquement des tuto en ASP/ADO

    Actuellement sur mon code j'importe tout les informations dans une listbox.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //Import Mail:Pass
                listBox2.Items.Clear();
                OpenFileDialog theDialog = new OpenFileDialog();
                theDialog.Title = "Open Text File";
                theDialog.Filter = "TXT files|*.txt";
                if (theDialog.ShowDialog() == DialogResult.OK)
                {
                    MessageBox.Show(theDialog.FileName.ToString());
                    string[] lines = File.ReadAllLines(theDialog.FileName);
                    listBox2.DataSource = lines;
                }
    J'aimerais rendre sa propre, sous la forme expliqué.
    Je me suis assez renseigner qu'on pouvait pas exemple utilisé un regex mais c'est hors mes compétences qui sont très limité.
    Donc sa serais plus l'utilisation de StreamReader.ReadLine ?

    Merci beaucoup pour vos éventuelles réponses!

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2018
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    listBox2.Items.Clear();
                OpenFileDialog theDialog = new OpenFileDialog();
                theDialog.Title = "Open Text File";
                theDialog.Filter = "TXT files|*.txt";
                if (theDialog.ShowDialog() == DialogResult.OK)
                {
                    MessageBox.Show(theDialog.FileName.ToString());
                    string[] lines = File.ReadAllLines(theDialog.FileName);
                    listBox2.DataSource = lines;
     
                    Regex MAIL = new Regex("^[a-zA-Z0-9]{1,25}@[a-zA-Z0-9]{1,20}.[a-zA-Z0-9]{2,3}$");
                    Regex PASS = new Regex("^:[a-zA-Z0-9]{1,35}$");
                }
    Au final, j'ai chercher et j'ai compris comment marche Regex enfin je pense
    Alors, je peux pas tester mon code, car ducoup je ne sais pas comment ajouter le résultats à ma listView

    J'ai déjà crée 2 colonnes MAIL & PASS
    Donc j'aimerais que le résutat du Regex MAIL aille dans la colonne MAIL
    et le résultat du Regex PASS aille dans la colonne PASS

    Et puis au passage je sais pas si le délimiteur que j'ai mis au Regex PASS va marcher.

  3. #3
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 896
    Points : 1 912
    Points
    1 912
    Par défaut
    Si tu as juste des lignes de la forme mail:pass, un simple string.Split() peut suffire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var mailPassPairs = File.ReadAllLines(filePath)
        .Where(l => !string.IsNullOrWhiteSpace(l)) //pas de ligne vide ou avec seulement des espaces
        .Select(l => l.Split(new [] { ':' }, 2) // divisée en 2 parties au plus autour du ':'
        .Select(a => new Tuple<string, string>(a[0].Trim(), a.Length > 1 ? a[1] : string.Empty) // le mail d'un côté (sans espaces entourant), le mot de passe ou une chaine vide de l'autre
        .ToArray(); // le tout sous la forme d'un tableau

  4. #4
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Beaucoup d'incohérences :

    Au final, j'ai chercher et j'ai compris comment marche Regex enfin je pense
    Non tu n'as pas compris

    Alors, je peux pas tester mon code, car ducoup je ne sais pas comment ajouter le résultats à ma listView....
    Ce n'est pas une ListView dans ton code c'est une ListBox

    Et puis au passage je sais pas si le délimiteur que j'ai mis au Regex PASS va marcher.
    Non ca ne fonctionnera pas ainsi.... suis les conseils de Noxen concernant la fonction String.Split

    Pour charger des éléments dans un contrôle Listview :

    1- Ajouter un contrôle Listview sur ton form (et pas un contrôle ListBox )
    2- Paramétrer sa propriété : .View = Details
    3- Ajouter 2 colonnes dans le ListView et nommer leurs entêtes
    4- Ajouter dynamiquement des éléments à ton contrôle Listview contenant 2 colonnes provenant d'un fichier formaté et délimité:

    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
     
        // Lines est un tableau de String
        foreach (string line in lines)
        {
            // On vérifie que la ligne contient le délimiteur
            if (line.Contains(":"))
            {
                // On vérifie qu'il n'existe pas plus d'un délimiteur pour chaque ligne 
                string[] lineSplitted = line.Split(":");
                if (lineSplitted.Count == 2)
                {
                    // On passe chaque ligne (tableau de String) splité en argument à la classe ListViewItem 
                    ListViewItem lvi = new ListViewItem(lineSplitted);
                    // On ajoute chaque instance lvi au contrôle Listview
                    ListView1.Items.Add(lvi);
                }
            }
        }
    A+

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2018
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    @ wallace1
    Yép à l'heure ou je disais le message, je n'avais pas compris.
    J'ai saisie 1h après comment faire csa propre, je n'ai pas fait exactement comme toi.

    En fait, au début j'envoyai les infos dans une listbox.
    Puis je voulais envoyer les infos de cette listbox vers ma listview, mais avec regex, enfin bref une perte de temp inutile.

    Donc je passe directement par la listview normal
    et puis je fais ma boucle pour que sa chope tout après bref tu comprend de toutes façon x)
    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
    OpenFileDialog theDialog = new OpenFileDialog();
                theDialog.Title = "Open Text File";
                theDialog.Filter = "TXT files|*.txt";
                if (theDialog.ShowDialog() == DialogResult.OK)
                {
                    MessageBox.Show(theDialog.FileName.ToString());
                    string[] lines = File.ReadAllLines(theDialog.FileName);    
     
                    Regex Filtrer = new Regex("^([a-zA-Z0-9]{1,25}@[a-zA-Z0-9]{1,20}.[a-zA-Z0-9]{2,3}):([a-zA-Z0-9]{1,35})$");
                    for (int i = 0; i < lines.Length; i++)
                    {
                        Match match = Filtrer.Match(lines[i]);
     
                        ListViewItem item = new ListViewItem(match.Groups[1].Value);
                        item.SubItems.Add(match.Groups[2].Value);
                        listView1.Items.Add(item);
                    }             
     
                }
    Tout marche nickel.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Analyse et filtrage d'information
    Par riadhmagh dans le forum Web sémantique
    Réponses: 0
    Dernier message: 18/10/2012, 01h10
  2. afficher un fichier txt grâce à notepad
    Par sandball22 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/02/2011, 08h50
  3. Récupérer informations de champs file grâce à Javascript
    Par rafmos dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 20/08/2010, 16h57
  4. Retirer des informations dans fichier .txt
    Par cricri77200 dans le forum Langage
    Réponses: 9
    Dernier message: 09/06/2009, 15h22
  5. Réponses: 2
    Dernier message: 17/04/2009, 12h13

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