Split plusieurs délimiteurs

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 305 fois - Téléchargée 26 fois

Contenu du snippet

Voici une petite fonction utile.. (pour moi en tous cas). Elle permet de faire un Split avec plus d'un sépareteur.

Source / Exemple :


Private Function ASplit(ByVal sWhat As String, ByRef sSeparators() As Variant) As Variant
    Dim N As Long, L As Long
    Dim vSep As Variant
    Dim aOut() As Variant
    
    ReDim aOut(0)
    L = 1
    
    For N = 1 To Len(sWhat)
        For Each vSep In sSeparators
            If Mid(sWhat, N, Len(CStr(vSep))) = CStr(vSep) Then
                aOut(UBound(aOut)) = Mid(sWhat, L, N - L)
                ReDim Preserve aOut(UBound(aOut) + 1)
                L = N + 1
            End If
        Next
    Next N
    
    aOut(UBound(aOut)) = Mid(sWhat, L)
    
    ASplit = aOut
End Function

' Utilisation:
Dim asSeparators() as Variant
Dim asTerms() as Variant

asSeparators = Array("+", "-")
asTerms = ASplit("a+b-c", asSeparators)

' renvoie :
' asTerms(0) = "a"
' asTerms(1) = "b"
' asTerms(2) = "c"

Conclusion :


Voila... Des comentaires, des options à ajouter, des optimisations ?

A voir également

Ajouter un commentaire

Commentaires

DowIChaT
Messages postés
8
Date d'inscription
lundi 5 mai 2003
Statut
Membre
Dernière intervention
1 octobre 2004
-
Très bien comme code mais ta fais 2 petites erreur ci-haut. Les 2 erreur sont dans l'utilisation que tu spécifie et non pas dans la function:

Erreur 1: Il manque un S à:
Dim asSeparator() as Variant

Correction:
Dim asSeparators() as Variant

-------------------------------------------------------------------------------

Erreur 2: Quand tu spécifie la chaine À vérifier tu écrit:
asTerms = ASplit("b+b-c", asSeparators)

* Mais plus bas dans le résultat tu dit:
' renvoie :
' asTerms(0) = "a"
' asTerms(1) = "b"
' asTerms(2) = "c"

* Donc le asTerms(0)="a" devrait égaler "b" et non "a"

Correction:
' renvoie :
' asTerms(0) = "b"
' asTerms(1) = "b"
' asTerms(2) = "c"

Mais a part sa très bien et très utile comme source surtout pour faire un programme ou serveur de chat alors jte donne 8/10 !!!
cs_seyev
Messages postés
93
Date d'inscription
samedi 9 juin 2001
Statut
Membre
Dernière intervention
6 mai 2005
1 -
Oups.. merci :) je corrige ca...
cs_lacomm
Messages postés
299
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2013
-
excellent code, merci, mais comme c'est pour débutant, quelques commentaires en plus auraient été bien

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.