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

VB.NET Discussion :

Supprimer les lignes d'un texte ayant un format défini [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Utilisation Privé de VB.NET
    Inscrit en
    Janvier 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Utilisation Privé de VB.NET

    Informations forums :
    Inscription : Janvier 2013
    Messages : 14
    Par défaut Supprimer les lignes d'un texte ayant un format défini
    Bonsoir,
    Je pratique très peu VB.NET et je reprends (aprés un long moment d'interruption !) un code que ce forum m'avait aidé à écrire.
    J'essaie maintenant de supprimer toutes les lignes d'un texte contenant le format suivant :

    "*" & "toto" & "[0-9][A-Z]*"
    ou
    "*" & "toto" & "[A-Z][0-9]*"

    Exemples de lignes du texte :
    --> "atotoA0z" --> à supprimer
    --> "atoto0Az" --> à supprimer
    --> "atotoFJz" --> à conserver
    --> "zzzzzzzz" --> à conserver

    Malheureusement pour moi, ce code simple ne peut pas fonctionner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim path As String = "Emplacement du fichier .txt"
    Dim lignes() As String = System.IO.File.ReadAllLines(path)
            Dim ASupprimer As New List(Of String)
            ASupprimer.Add("*" & "toto" & "[0-9][A-Z]*")
            ASupprimer.Add("*" & "toto" & "[A-Z][0-9]*")
            System.IO.File.WriteAllLines(path, lignes.Except(ASupprimer))
    Donc s'il existe une solution facile à coder, je suis preneur ...
    Merci de votre aide

  2. #2
    Membre Expert
    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
    Billets dans le blog
    7
    Par défaut
    Salut docteur26,

    S' il existe une solution facile à coder ca sera à toi de la trouver car nous te donneront des infos qui te permettrons de solutionner toi-même ton problème !

    Regardes du côté de la classe regex et des patterns.

    A+

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  4. #4
    Membre averti
    Homme Profil pro
    Utilisation Privé de VB.NET
    Inscrit en
    Janvier 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Utilisation Privé de VB.NET

    Informations forums :
    Inscription : Janvier 2013
    Messages : 14
    Par défaut
    Merci de vos réponses.
    Bref, je vais essayer de comprendre tout seul un tuto que j'avais déjà vu mais qui comme la conclusion l'indique : " ... leur aspect complexe au premier abord ...", ne m'avait vraiment pas trop éclairé sur le sujet.
    Je m'y remets ...
    Bonne soirée.

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    La finalité de ce que tu souhaites faire est flou

    Si c'est juste sur un mot Contains suffit
    Si c'est sur plusieurs mots une expression régulière avec plusieurs mots suffit.
    Si c'est plus complexe il faut plus de détail.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Private Sub btnPurge_Click(sender As System.Object, e As System.EventArgs) Handles btnPurge.Click
            Dim rg As New System.Text.RegularExpressions.Regex("toto|titi|tutu")
     
            Dim lstLignes As List(Of String) = New List(Of String)
            ' lecture fichier et constitution de la liste
            For Each ligne As String In File.ReadAllLines("D:\data\fichiers\apurger.txt")
                'If Not ligne.Contains("toto") Then
                If Not rg.IsMatch(ligne) Then
                    lstLignes.Add(ligne)
                End If
                'End If
            Next ligne
            File.WriteAllLines("D:\data\fichiers\apurger.txt", lstLignes)
        End Sub
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  6. #6
    Membre averti
    Homme Profil pro
    Utilisation Privé de VB.NET
    Inscrit en
    Janvier 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Utilisation Privé de VB.NET

    Informations forums :
    Inscription : Janvier 2013
    Messages : 14
    Par défaut
    Merci r26t,
    tu m'as mis sur la bonne voie avec le code que tu m'as proposé.
    Effectivement, les Regex sont la solution simple à mon problème.
    J'ai fait quelques essais en m'aidant du tuto et je tiens le bon bout.
    Pour répondre à ta question (désolé de ne pas avoir été clair), il s'agit bien pour moi d'une recherche sur une suite complexe de caractères.
    Alors voilà ce que je cherchais à faire dans l'intitulé de mon premier post :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     Private Sub btnPurge_Click(sender As System.Object, e As System.EventArgs) Handles btnPurge.Click
            Dim rg As New System.Text.RegularExpressions.Regex("toto[0-9][A-Z]|toto[A-Z][0-9]")
     
            Dim lstLignes As List(Of String) = New List(Of String)
            ' lecture fichier et constitution de la liste
            For Each ligne As String In File.ReadAllLines("D:\data\fichiers\apurger.txt")
                If Not rg.IsMatch(ligne) Then
                    lstLignes.Add(ligne)
                End If
            Next ligne
            File.WriteAllLines("D:\data\fichiers\apurger.txt", lstLignes)
        End Sub
    Donc maintenant grace à toi, je devrais pouvoir poursuivre mon code tout seul.
    Encore une fois merci.

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

Discussions similaires

  1. Supprimer les lignes en double dans un fichier texte
    Par SilkyRoad dans le forum Contribuez
    Réponses: 1
    Dernier message: 01/05/2017, 15h09
  2. Réponses: 9
    Dernier message: 08/10/2013, 21h22
  3. [LV2009] Supprimer les lignes vides dans un fichier texte
    Par Super2006 dans le forum LabVIEW
    Réponses: 3
    Dernier message: 11/11/2011, 14h32
  4. Réponses: 6
    Dernier message: 30/10/2009, 16h13
  5. Supprimer les lignes d'un fichier texte
    Par radhwene dans le forum Langage
    Réponses: 1
    Dernier message: 20/06/2007, 11h01

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