Décomposer une ligne de commande ou tout autre texte

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 841 fois - Téléchargée 39 fois

Contenu du snippet

Ce code permet de décomposer un texte quelconque en plusieurs parties en fonction d'un carractère de séparation quelconque voir même d'un ensemble de caractères.

Ce code peut servir a beaucoup de choses. En ce qui me concerne, je l'ai composé pour m'éviter une multiplication de valeurs dans un fichier INI pour enregistrer le contenu d'une listView(Avant, je l'enregistrai avec une valeur différente par colonne, avec ce code, je peu me permettre de faire tenir une ligne de la liste dans une seule valeur, cela ne pose plus de problèmes lors du chargement du fichier dans la liste)

Placez ce code dans un module (C'est plus pratique surtout si vous en avez besoin sur plusieurs controles différents), ensuite, il ne vous reste plus qu'a faire comme indiqué à la suite du code.

Source / Exemple :


Public Type SEPRR
    PosRev(100) As String
    PosAlr(100) As String
    Count As String
End Type
Public Function Séparer(Chaine As String, Séparateur As String) As SEPRR
    Dim IndX, IndX2, Lpos
    Séparer.PosRev(0) = Chaine
    Lpos = 1
    Séparer.Count = 0
    IndX = 0
    For IndX2 = Lpos To Len(Chaine) - Lpos
        If Lpos < Len(Chaine) Then
            If Mid(Chaine, IndX2, Len(Séparateur)) = Séparateur Then
                IndX = IndX + 1
                Séparer.PosAlr(IndX) = Mid(Chaine, Lpos, IndX2 - Lpos)
                Lpos = IndX2 + Len(Séparateur)
                Séparer.Count = Séparer.Count + 1
            End If
        Else
        End If
    Next
    Séparer.PosAlr(IndX + 1) = Right(Chaine, Len(Chaine) - Lpos + 1)
    Séparer.Count = Séparer.Count + 1
    For IndX = 1 To Séparer.Count
        Séparer.PosRev(Séparer.Count - IndX + 1) = Séparer.PosAlr(IndX)
    Next
End Function

Conclusion :


Extraire une valeur contenue dans une chaine en associant les valeurs extraites de 1 à x de la droite vers la gauche :

Retour = Séparer([Chaine],[caractère de séparation]).PosRev([indexe de la valeur extraite])

Extraire une valeur contenue dans une chaine en associant les valeurs extraites de 1 à x de la gauche vers la droite:

Retour = Séparer([Chaine],[caractère de séparation]).PosAlr([indexe de la valeur extraite])

Donner le nombre total de valeurs extractibles

Retour = Séparer([Chaine],[caractère de séparation]).Count

Retour prend la valeur retournée par la fonction

L'indexe 0 donne la chaine complète

Exemple :

Retour = Séparer("C:\Windows\System","\").PosAlr(2)
la valeur de Retour sera "Windows"
Retour = Séparer("C:\Windows\System","\").PosAlr(1)
la valeur de Retour sera "C:"
Retour = Séparer("C:\Windows\System","\").PosRev(1)
la valeur de Retour sera "System"

Si mon explication n'est pas assez claire, si vous trouvez des bugs ou que vous pouvez optimiser ce code, veuillez me le signaler.
merci

A voir également

Ajouter un commentaire

Commentaires

Commenter la réponse de cs_Berenger

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.