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 :

Récupérer les éléments d'un String


Sujet :

VB.NET

  1. #1
    Invité
    Invité(e)
    Par défaut Récupérer les éléments d'un String
    Bonjour à tous,
    Dans un programme VB.NET, j'ai besoin de récupérer des éléments particuliers dans un string pour en faire un tableau contenant chaque élément.
    Les éléments sont tous séparés d'un espace ...
    Vous allez me dire :
    Fais un Split !
    Seulement, lorsque des caractères sont entourés de guillemets, la séparation ne doit pas avoir lieu et doit mettre la chaine dans un seul item du tableau.
    Petit exemple :

    J'aime les fleurs "mais pas les roses" et toi "tu aimes quoi ?"
    Si cette chaine passe dans la fonction, la fonction retournera un tableau :

    J'aime
    les
    fleurs
    "mais pas les roses"
    et
    toi
    "tu aimes quoi ?"
    Si vous avez une fonction permettant cet exploit, je suis preneur
    Bonne soirée

  2. #2
    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
    Points : 5 100
    Points
    5 100
    Par défaut
    Bonjour,

    Tu peux procéder ainsi,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        Function DecoupeChaine(ByVal s As String) As String()
            Dim i As Integer = 0
            Dim sb As New System.Text.StringBuilder
            Dim guillemet As Boolean = False
            sb.Append(s)
            While i < sb.Length
                If sb(i) = " " Then If Not guillemet Then sb(i) = "|"
                If sb(i) = """" Then guillemet = Not guillemet
                i += 1
            End While
            Return Split(sb.ToString, "|")
        End Function
    A+, Hervé.
    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.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    665
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 665
    Points : 1 161
    Points
    1 161
    Par défaut
    Bonsoir,
    les expressions régulières peuvent être envisagées dans un cas de recherches différentes comme ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Private Function SplitPlus(ByVal source As String) As MatchCollection
     
            Dim pattern As String = "(?<=\s)"".+?""(?=\s)|[^\s]+"
            Dim matches As MatchCollection = Regex.Matches(source, pattern)
     
            Return matches
     
        End Function
    ne pas oublier de faire l'import suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Imports System.Text.RegularExpressions
    Exemple d'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            For Each match As Match In SplitPlus(tbxSplitPlus.Text)
                Console.WriteLine(match.Value)
            Next
    PS 1 : modif pattern "\b[\w\W-[""\s]]+\b|""[\w\W-[""]]+""" en "(?<=\s)"".+?""(?=\s)|[^\s]+"
    La recherche sera insensible aux fautes de frappe ou espaces intempestifs.
    Exemple d'occurences trouvées :
    J'ai"me les fleurs " mais pas les ro"ses" et toi "tu aimes quoi ?"
    C'est tiré par les cheveux, mais montre la puissance des Regex.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Merci pour vos deux réponses

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

Discussions similaires

  1. [Débutant] Récupérer les éléments de List<string>[]
    Par blackhox dans le forum C#
    Réponses: 4
    Dernier message: 02/11/2013, 16h53
  2. StrinkTokenizer : récupérer les éléments "vides"
    Par Yannick_from_31 dans le forum Langage
    Réponses: 3
    Dernier message: 21/08/2006, 10h29
  3. Comment récupérer les éléments d'un getComments
    Par AlexandraS dans le forum Langage
    Réponses: 6
    Dernier message: 31/05/2006, 11h21
  4. Réponses: 5
    Dernier message: 22/02/2006, 17h32
  5. Comment récupérer les éléments d'un autre programme ?
    Par Henri_13 dans le forum API, COM et SDKs
    Réponses: 22
    Dernier message: 29/11/2005, 00h16

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