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 :

Decouper un texte en plusieurs parties [Débutant]


Sujet :

VB.NET

  1. #1
    Membre habitué
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 154
    Points : 167
    Points
    167
    Par défaut Decouper un texte en plusieurs parties
    Bonjour à tous !

    Je vous explique mon problème :

    J'ai un fichier texte dans lequel on retrouve une ou plusieurs parties similaires. Je m'explique :

    Chaque début de partie (d'un seul et unique fichier) commence par "Machine". J'aimerai mettre chaque partie dans un string sauf que j'ai quelques petits problèmes

    Voila le gros de ma procédure,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Using sr As New StreamReader("D:\Dossier\Fichier.txt")
     
    While Not (sr.EndOfStream)
     
    currentLine = sr.ReadLine()
    Et après je bloque. Si je met un "If currentLine.Contains("Machine")" puis "tableau(cpt) += currentLine", la condition ne sera vraie qu'une fois

    Avez-vous une idée pour découper un fichier en plusieurs parties commencant par "Machine" et les stocker dans un tableau de string ?

    Merci d'avance,

    Jah

  2. #2
    Membre actif
    Homme Profil pro
    Retraité intello
    Inscrit en
    Juillet 2012
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité intello

    Informations forums :
    Inscription : Juillet 2012
    Messages : 186
    Points : 205
    Points
    205
    Par défaut
    Bonjour.

    En utilisant la classe System.String, et la fonction IndexOf, vous pouvez trouver les positions successives que le mot "Machine" occupe dans votre texte.

    Cordialement.

  3. #3
    Membre confirmé Avatar de hugoclo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 615
    Points : 480
    Points
    480
    Par défaut
    Peux tu nous mettre un exemple de ton fichier texte
    Lorsque le sage montre la lune du doigt l'idiot regarde le doigt.

  4. #4
    Membre habitué
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 154
    Points : 167
    Points
    167
    Par défaut
    Merci pour vos réponses !

    @Jean-Marie Grave : Merci, je vais essayer votre méthode !

    EDIT : Je comprend pas, le indexOf ne peut pas fonctionner. Je me déplace ligne par ligne, du coup si j'arrive sur ma ligne Machine, il sera déjà trop tard


    @hugoclo : Alors le fichier texte est du type :

    Machine : xxxxx

    xxxxDonnées sur environ 100 lignes xxxx


    Machine : xxxx
    etc

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,
    Et un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    dim aList as List(of String) = new List(of String)
    dim aBloc as String = ""
    While Not (sr.EndOfStream) 
      currentLine = sr.ReadLine()
      If currentLine.Contains("Machine") AndAlso not String.IsNullOrEmpty(aBloc)then 
        aList.add(aBloc)
        aBloc = ""
      End if
      aBloc += CurrentLine
    End While
    Bon je n'ai pas Visual Studio alors il y a peut-être une erreur mais en gros, ça doit fonctionner.

    eb.

  6. #6
    Membre habitué
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 154
    Points : 167
    Points
    167
    Par défaut
    Woua, merci ebastien !!

    Aucune erreur, ça fonctionne parfaitement !

    Tu peux m'expliquer l'utilité du : AndAlso not String.IsNullOrEmpty(aBloc) ?

    Merci à tous !

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Citation Envoyé par Jah73 Voir le message
    Tu peux m'expliquer l'utilité du : AndAlso not String.IsNullOrEmpty(aBloc) ?
    String.IsNullOrEmpty permet de tester si une string est vide ou égale à nothing. La variable string aBloc sert à stocker le bloc complet. Lors de la première lecture de la ligne contenant "Machine", cette variable sera vide. Dans ce cas, il ne faut pas l'ajouter à la liste.

    Bonne journée.
    eb.

  8. #8
    Membre habitué
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 154
    Points : 167
    Points
    167
    Par défaut
    D'acc merci !

    Une dernière petite question, j'ai fait un aBloc += currentLine & vbCrLf. J'aimerai maintenant lire le aBloc (de type String) ligne par ligne.

    Y a-t-il une méthode pour ça ?

  9. #9
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Pourquoi relire chaque bloc ligne par ligne ? Tu as déjà lu chacune des lignes pour les stocker dans des blocs, tu ne peux pas en profiter pour faire ton traitement de la ligne à ce moment là ? ça éviterait d'avoir à lire chaque lignes 2 fois ... Qu'est-ce que tu veux faire exactement fonctionnellement ?

  10. #10
    Membre habitué
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 154
    Points : 167
    Points
    167
    Par défaut
    Merci pour ton aide !

    En fait il y a des données du type

    Mode de controle : xxxxxx

    Avant je faisais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If currentLine.Contains("Mode de controle") Then
    ModeCtrl = aBloc.Replace(" ", "")
     
    'Traitements ...
     
    End If
    Sauf que maintenant je peux plus et en plus, le nombre de "xxxx" de mode de contrôle ne sont pas fixes



    EDIT : Comme tu l'as dit ebastien, je vais essayer de faire ce traitement au premier passage !

  11. #11
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Je n'ai pas bien compris le problème... Pour revenir à ta question, pour lire une string ligne par ligne, tu peux utiliser la méthode Split qui te retournera un tableau de chaine et lire chaque élément du tableau.
    Maintenant je ne suis pas sûr que conceptuellement tout ça soit vraiment optimisé...

    eb.

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

Discussions similaires

  1. [AppleScript] Decouper un texte en plusieurs morceaux et les afficher successivement
    Par Rico739 dans le forum AppleScript
    Réponses: 18
    Dernier message: 07/11/2014, 22h03
  2. Découpage d'un fichier texte en plusieurs parties
    Par adrien.forbat dans le forum Général Java
    Réponses: 5
    Dernier message: 31/08/2014, 13h03
  3. Affichage de texte en plusieurs partie dans la meme fenetre
    Par ClaudeHarvey dans le forum VBScript
    Réponses: 3
    Dernier message: 28/03/2007, 19h21
  4. Decoupé une fenêtre en plusieurs parties
    Par Premium dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 12/12/2006, 13h34
  5. Batchmove en plusieurs parties
    Par Oluha dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/05/2005, 14h43

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