Split sur plusieurs critères


Contenu du snippet

Function MultiSplit(ByVal sStr As String, bKeepSepar As Boolean, ParamArray aArray()) As String()
'    sStr        -> chaîne à  parser
'    bKeepSepar  -> garder ou non les  caractères de référence
'    aArray      ->  tableau des références de taille variables
    Dim sCol As New Collection
    Dim sChar          As String, sLeft As String
    Dim bFound         As Boolean
    Dim aRes()         As String
    Dim i              As Integer, j As Integer, NbCarac As  Integer
    i = 0
    
    While LenB(sStr) > 0
        i = i + 1
        bFound = False
        For j = LBound(aArray) To UBound(aArray)
            NbCarac = Len(aArray(j))
            sChar = Mid$(sStr, i, NbCarac)
            If sChar = CStr(aArray(j)) Then bFound = True: Exit  For
        Next j
        If bFound Then
            sLeft = Left$(sStr, i - 1)
            If LenB(sLeft) > 0 Then sCol.Add sLeft
            If bKeepSepar Then sCol.Add sChar
            sStr = Right$(sStr, Len(sStr) - (NbCarac + (i - 1)))
            i = 0
        ElseIf sChar = vbNullString Then
            sCol.Add sStr
            sStr = vbNullString
        End If
    Wend
    ReDim aRes(sCol.Count - 1)
    For i = 1 To sCol.Count
        aRes(i - 1) = sCol.Item(i)
    Next i
    MultiSplit = aRes
    
    Set sCol = Nothing
    Erase aRes
End Function
'  EXEMPLE  D'UTILISATION
Private Sub Form_Load()
    Dim a$(), i%
    a = MultiSplit( _
          "Function MultiSplit(ByVal sStr As String, bKeepSepar As Boolean,  ParamArray aArray()) As  String()", _
          False, "(", ")", ",", "String", " ")
    For i = 0 To UBound(a)
        Debug.Print "_" & a(i) & "_"
    Next i
End Sub


Compatibilité : VB6, VBA

Disponible dans d'autres langages :

A voir également

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.