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 :

Formatage de texte [Débutant]


Sujet :

VB.NET

  1. #1
    Membre régulier Avatar de Tornade8912
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2014
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 83
    Points : 74
    Points
    74
    Par défaut Formatage de texte
    Bonjour,
    Ça fait 3 semaines que je cherche à passer de ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    arbre, bateau //partie a supprimer
    vélo
    test
     
    //ligne
    /*
    a
    b
    c
    */
    A ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    arbre, bateau
    vélo
    test
    En fait concrètement ce que je voudrais faire c'est supprimer tout ce qui est précédé par des "//" et ce qui se trouve entre des /* */ j'ai entendu parler des expressions régulières et je sais pas si c'est possible pour mon cas donc je voudrai savoir si déjà ce que je veux faire est possible.

    Cordialement

  2. #2
    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,

    Que l'on se dise une chose :

    Si un éditeur de fichier comme Notepad++ est capable d'ajouter ou de supprimer des commentaires de n'importe quel langage de programmation alors il est forcément possible de supprimer par la même occasion ce qui se situe :

    - entre des balises de commentaires
    - sur une ligne préfixée
    - suffixé sur une ligne
    ....etc..... et en multiligne également !

    Il n'y a pas grands chose à dire si ce n'est qu'une grande piste (voir la solution) se situe ici en utilisant les expressions régulières !

  3. #3
    Membre régulier Avatar de Tornade8912
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2014
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 83
    Points : 74
    Points
    74
    Par défaut
    Bonjour,
    Merci mais je ne comprends pas les expressions régulières. Il me semble que c'est vous qui m'aviez conseillé un logiciel pour les regex mais je ne comprends pas il me faudrait quelque chose de plus simple car c'est un peu du chinois pour moi

  4. #4
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Bonjour

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Private listin As New List(Of String)
        Private listout As New List(Of String)
        Private Sub TextProcess()
            Dim position As Integer
            listin = IO.File.ReadAllLines(Application.StartupPath & "\tontext.txt", System.Text.Encoding.Default).ToList
            Dim line As Integer = 0  
            While line < listin.Count
             'on cherche le //
                position = listin(line).IndexOf("//")
                If position > -1 Then
                    listout.Add(listin(line).Substring(0, position))
                    line += 1
                Else
                    'on cherche le /*
                    position = listin(line).IndexOf("/*")
                    If position > -1 Then
                       'on cherche le */ et assigne ligne à sa nouvelle position
                        line = listin.IndexOf("*/")
                        line += 1
                    Else
                         ' ajoute les autres strings 
                        listout.Add(listin(line))
                        line += 1
                    End If
                 End If
                End While
             IO.File.WriteAllLines(Application.StartupPath & "\tontextout.txt", listout.ToArray)
        End Sub

  5. #5
    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
    Citation Envoyé par Tornade8912 Voir le message
    Bonjour,
    Merci mais je ne comprends pas les expressions régulières. Il me semble que c'est vous qui m'aviez conseillé un logiciel pour les regex mais je ne comprends pas il me faudrait quelque chose de plus simple car c'est un peu du chinois pour moi
    Oui effectivement .... le logiciel Expresso.

    L'apprentissage des expressions régulières requiert de passer "au départ" par la constitution de pattern assez simples ... Un bon tuto ici

    Quand on n'arrive pas à résoudre un problème il faut le découper donc pourquoi ne pas commencer par résoudre ceci :

    --> Supprimer les commentaires sur une ligne comme ce schéma :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    arbre, bateau //partie a supprimer
    Donc en RegEx ça donnerait : Sur une ligne, supprimer (ou remplacer par une valeur vide) tout ce qui se situe après 2 slashs consécutifs (en incluant la suppression de ces 2 slashs !)


    Le contenu de ton fichier texte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    arbre, bateau //partie a supprimer
    vélo
    test
     
    //ligne
    /*
    a
    b
    c
    */
    Une manière de faire parmi tant d'autres :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
            Try
                'Chemin du fichier texte
                Dim fPath = "D:\Bureau\regex.txt"
                'Pattern du commentaire sur une ligne
                Dim LineCommentspattern = "//(.*?)$"
                'Contenu du fichier texte modifié
                Dim txt As String = String.Empty
     
                'On déclare un streamreader pour lire le fichier texte
                Using sr As New StreamReader(fPath, System.Text.Encoding.Default)
                    'On lit le fichier jusqu'à la fin du flux
                    Do While Not sr.EndOfStream
                        'On récupère la ligne en cours de lecture dans la variable Str
                        Dim str As String = sr.ReadLine
                        'On concatène chaque ligne lu afin stocker chaque changement dans la variable txt
                        txt &= str & vbNewLine
                        'On capture toutes les correspondances du pattern sur la ligne en cours de lecture (retourne une collection)
                        Dim matches = Regex.Matches(str, LineCommentspattern, RegexOptions.Singleline)
                        If matches.Count <> 0 Then
                            'On parcours chaque correspondance 
                            For Each m As Match In matches
                                'On remplace la correspondance trouvée (m.value) par une valeur vide 
                                txt = txt.Replace(m.Value, String.Empty)
                            Next
                        End If
                    Loop
                    'On ferme le fichier en cours de lecture
                    sr.Close()
                End Using
                'On écrit le contenu de la variable txt dans le même fichier
                My.Computer.FileSystem.WriteAllText(fPath, txt, False)
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
    Bien sure ce n'est pas la façon dont je procéderais (pas optimisée à mon gout) mais c'est à but didactique, pour en extraire le raisonnement surtout !

    A+

  6. #6
    Membre régulier Avatar de Tornade8912
    Homme Profil pro
    Développeur
    Inscrit en
    Mars 2014
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 83
    Points : 74
    Points
    74
    Par défaut
    Super merci le code de shayw fonctionne !
    C'est pour ça que je tiens à vous remercier. En plus ça faisait tellement longtemps que je cherchais donc merci beaucoup !
    Cordialement

  7. #7
    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
    moi je te félicite car tu viens demander du code prêt à l emploi et comme d habitude il y a toujours qqun qui est prêt à le donner ..... bien que cela ne vous soit pas profitable puisqu'au final ta matière grise ne sera jamais mise à rude épreuve dans ce domaine qui te restera toujours aussi méconnu......

    ....et bravo shayw on constate que tu sais le faire comme toujours..... mais en agissant ainsi tu contribues à faire de nos membres des requêteurs écervelés dépourvus de gout à la réflexion et à l effort ....bravo shayw...

    fin du HS...

  8. #8
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    et bravo shayw on constate que tu sais le faire comme toujours..... mais en agissant ainsi tu contribues à faire de nos membres des requêteurs écervelés dépourvus de gout à la réflexion et à l effort ....bravo shayw...

    bien donc que les requêteurs se débrouillent

  9. #9
    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
    Citation Envoyé par shayw Voir le message
    bien donc que les requêteurs se débrouillent
    Ce n'est pas ici l'objet du dilemme Shayw..... concrètement resitue le contexte :

    -> OP demande une façon de faire pour passer d'une telle donnée d'entrée à une telle donnée de sortie, aucun code à l'appui, donc OP n'a pas tenté quoique ce soit.
    -> Je l'oriente vers les expressions régulières.
    -> Il dit non je comprends rien aux expressions régulières, je veux autre chose de plus simple.....
    -> Dans la vie on à rien sans rien, c'est en ce sens que j'essaye de luis expliquer qu'il faut découper son problème en parties plus simples et ainsi débuter un apprentissage en adéquation avec ce qu'il lui est possible de faire selon son niveau ......
    -> Tu lui donne un code brut de pomme
    -> Le gars il est content, ça fonctionne et il reviendra certainement un jour avec le même problème étant donné qu'il aura fait l'impasse sur le raisonnement ......

    Je dis souvent à mes enfants.... je veux bien t'aider pour ton devoir de maths ....... : le plus important ce n'est pas le résultat (la solution) que tu obtiendras mais le raisonnement qui t'auras mener jusqu'à celui-ci (en algorithmique on appelle ça la signature du développeur = son raisonnement et c'est ça qui est glorifiant à mon sens) !

    Il faut guider nos membres et non pas leur mâcher leur travaille, laissons-les s'épanouir et se rendre compte par eux-même que le développement ne se réduit pas à du simple copier/coller de codes sources mais à une incommensurable phase d'apprentissage d'un domaine en perpétuelle évolution !

    A+

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

Discussions similaires

  1. Pb de formatage de texte... Vertical, inversé...
    Par Grammaton dans le forum Access
    Réponses: 4
    Dernier message: 01/03/2007, 13h54
  2. Formatage de texte
    Par cryptorchild dans le forum Langage
    Réponses: 5
    Dernier message: 12/03/2006, 16h41
  3. Formatage de texte (enlever les \)
    Par glevesque dans le forum Langage
    Réponses: 6
    Dernier message: 15/02/2006, 16h54
  4. Formatage de texte
    Par Destiny dans le forum Langage
    Réponses: 2
    Dernier message: 28/11/2005, 10h09
  5. Unicode et formatage de textes
    Par messier79 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/11/2005, 13h49

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