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 une chaine de caractère avec plusieurs séparateurs


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 50
    Points : 35
    Points
    35
    Par défaut Decouper une chaine de caractère avec plusieurs séparateurs
    Bonjour,

    j'ai un fichier texte qui se compose comme ceci :

    26 nov. 2010 20:56:45=Google*http://www.google.fr
    26 nov. 2010 20:58:45=Yahoo*http://www.yahoo.fr
    26 nov. 2010 20:59:45=Orange*http://www.orange.fr


    Je souhaiterai découper les chaines de caractères pour stocker les dates dans un 1er tableau le titre de la page dans un 2nd tableau et l'url dans un 3ème tableau en me basant sur les séparateurs suivant '=' et '*'.

    Pouvez vous me dire quel est la marche à suivre sachant que la longueur du titre et de l'url peut être variable

    Merci d'avance.

  2. #2
    Membre du Club Avatar de Gilles57-H-G
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 88
    Points : 62
    Points
    62
    Par défaut
    Je n'ai même pas lu exactement ce que tu veux faire

    Chaine de caractère VB
    http://silkyroad.developpez.com/VBA/...nesCaracteres/

    Manipulation des fichiers en VB
    http://warin.developpez.com/access/fichiers/

    Tableau en VB
    http://silkyroad.developpez.com/vba/tableaux/

    Tu as tout

    Bon courage

  3. #3
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    La première solution consiste à utiliser les méthodes String.IndexOf et String.SubString.

    La première méthode te permettra de savoir à quelle position se trouve ton délimiteur, et la seconde te permettra d'extraire la portion qui t’intéresse, en te basant sur les positions.

    Une autre solution serait d'utiliser la méthode String.Split en indiquant les différents séparateurs. Probablement la méthode la plus simple dans ton cas.

    Enfin on pourrait utiliser les expressions régulières.

    A partir de là, y'a plus qu'à

  4. #4
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Citation Envoyé par Gilles57-H-G Voir le message
    Tu as tout
    Certe mais c'est du VB.Net ici, pas du VB6/VBA

  5. #5
    Membre du Club Avatar de Gilles57-H-G
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 88
    Points : 62
    Points
    62
    Par défaut
    Quel est le compilateur ?

    Parce que ce qu' il cherche a faire c'est le base, les fonctions de caractères, les tableaux, les accès fichier sont les même , c'est du Basic.

    A moins que je me trompe.

    Regarde ceci, cours de VB.Net sur VB Express.
    http://plasserre.developpez.com/cour...roduction#II-A

    Les fonctions VBA, sont des fonctions Basic, les accès fichier les tableau sont les même la différence est dans les fonction spécifique à VBA pour Excel, par ex.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 50
    Points : 35
    Points
    35
    Par défaut
    Merci de votre aide.

    En gros ce que je cherche c'est comment isolé ce qui se trouve devant le signe '=" dans un tableau
    Ce qui ce trouve entre le signe '=' et '*' dans un autre
    et ce qui se trouve après le signe '*' dans un dernier tableau.

    Merci beaucoup

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2004
    Messages : 68
    Points : 86
    Points
    86
    Par défaut
    Voilà une piste:
    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
    36
    37
    38
    39
    40
    Imports System.IO
     
    Module Module1
     
        Public MesAdresses As List(Of Web)
     
        Public Class Web
            Private Property DateLongue As String
            Private Property Nom As String
            Private Property Adresse As String
     
            Public Sub New(ByVal DateLongue As String, ByVal Nom As String, ByVal Adresse As String)
                Me.DateLongue = DateLongue
                Me.Nom = Nom
                Me.Adresse = Adresse
                Console.WriteLine("Ajout => Date : {0}, Nom : {1}, Adresse : {2}", Me.DateLongue,
                                  Me.Nom, Me.Adresse)
            End Sub
        End Class
     
        Sub Main()
            Dim SR As New StreamReader("C:\FichierTexte.txt")
            MesAdresses = New List(Of Web)
            Dim a(), b() As String
            Dim Ligne As String
             Ligne = SR.ReadLine
            While Ligne IsNot Nothing
                Try
                    a = Ligne.Split("=") 'retourne deux élèments de chaque côté du signe =
                    b = a(1).Split("*") 'applique le même traitement au deuxième élèment pour le signe *
                    MesAdresses.Add(New Web(a(0), b(0), b(1))) 'a(1) ne sert plus
                Catch ex As Exception
                    Console.WriteLine(ex.Message)
                End Try
                Ligne = SR.ReadLine
            End While
            Console.ReadLine()
        End Sub
     
    End Module
    Je ne vois pas l'intérêt de trois tableaux, mais chacun fait à son idée.

  8. #8
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 442
    Points
    4 442
    Par défaut decouper,scanner une chaine de texte,vb,vba
    Bonjour Nandofive,
    je vois que tu y tiens à ton tableau ,c'est ce que il faut.
    Et si c'est en VBA voici le code qui fait le travail pour 3 champs et 2 separateurs mais il pourrait etre generalise à n champ et n-1 separateur en modifiant les dimensions.
    De plus il peut scanner autant de lignes texte dans ton fichier texte que tu veux .
    De meme les lignes pourrait aussi bien provenir des lignes d'un classeur excel.

    ci-dessous le code:
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    'ajouter un UserForm+ un Bouton + un TextBox
    'creer un fichier Test.txt sur repertoire c: qui contient tes 3 lignes
    'Copier le code VBA ci-dessous et coller
    '
    'table des 3 champs a lire et nombre de champs
    Dim tblChamps(3) As String
    Dim nbCh As Integer
    Private Sub CommandButton1_Click()
    Dim chaineATraiter As String
     
     
    TextBox1.Text = "" 'Efface TextBox1 sur UserForm1
     
    Open "C:\Test.TXT" For Input As #1    ' Ouvre le fichier.
    Do While Not EOF(1)    ' Effectue la boucle jusqu'à la fin du fichier.
        Line Input #1, chaineATraiter        ' Lit la ligne dans la variable.
     
        Call Separe(chaineATraiter)   ' appelle la sub SepareChamp
        For II = 1 To 3 'Affiche ligne dans TextBox1
        TextBox1.Text = TextBox1.Text & " " & tblChamps(II)
        Next
        TextBox1.Text = TextBox1.Text & vbCrLf 'saut de ligne
    Loop
    Close #1    ' Ferme le fichier.
    End Sub
    Private Function SepareChamp(chaineATraiter As String)
        Dim PosTrouve As Integer
        Dim tblSep(2) As String
     
        nbCh = 3 'nombre max de champs a traiter
     
         tblSep(1) = "=" 'Initialise la table des separateurs
         tblSep(2) = "*"
     
        For II = 1 To nbCh 'Initialise la table des champs a rechercher
            tblChamps(II) = ""
        Next
        'Init  positon champ separateur vide
        PosTrouve = 0
        II = 1
        Do While True
            sepTrouve = tblSep(II)
            PosTrouve = InStr(1, chaineATraiter, sepTrouve, vbTextCompare)
     
            If PosTrouve <> 0 Then 'Si separateur trouve
               'recupere le champ
                tblChamps(II) = Left(chaineATraiter, PosTrouve - 1) 'Recupere le champ
               'Elimine le champ trouve de la chaine
                chaineATraiter = Right(chaineATraiter, Len(chaineATraiter) - PosTrouve)
                II = II + 1 'Incremente compteur champ
     
                If II = nbCh Then ' Si dernier champ exit
                    tblChamps(II) = Right(chaineATraiter, Len(chaineATraiter) - PosTrouve)
                    Exit Do
                Else
                 sepTrouve = tblSep(II)
                End If
             End If
        Loop
    End Function
    enfin si jamais tu t'orientes vers vb.net, c'est la fonction string.split qu'il te faut .
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim tblchamps() as string
    tblChamps()= String.Split(chaineATraiter, "=")
    Une seule ligne de code ,c'est de l'artillerie lourde.

    bon code...

Discussions similaires

  1. Réponses: 11
    Dernier message: 10/02/2009, 10h31
  2. Diviser une chaine de caractère en plusieurs ^^
    Par snake23 dans le forum Débuter
    Réponses: 3
    Dernier message: 23/03/2006, 19h05
  3. Lecture d'une chaine de caractère avec fgets
    Par mayoouketchup dans le forum Langage
    Réponses: 9
    Dernier message: 22/12/2005, 17h17
  4. [Tableaux] decouper une chaine de caractères
    Par pekka77 dans le forum Langage
    Réponses: 12
    Dernier message: 03/12/2005, 20h08
  5. Réponses: 2
    Dernier message: 06/12/2002, 08h50

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