This site uses cookies own and third. If you continue to browse consider to accept the use of cookies. OK More Info.

MultiSplit, un split diferente!

  • 1 Replies
  • 4373 Views

0 Members and 1 Guest are viewing this topic.

Offline 79137913

  • *
  • Moderator
  • Posts: 713
  • Actividad:
    3.33%
  • Country: 00
  • Reputación 7913
  • 4 Esquinas
    • View Profile
    • Doors.Party
    • Email

MultiSplit, un split diferente!

  • on: February 05, 2013, 09:32:21 am
HOLA!!!

Queria hacer un split que devuelva un array con varios delimitadores y aparte tenga la opcion de guardar el delimitador... en fin... hice esta funcion, espero que les sirva.

Antes que el codigo Ejemplo:

Code: (vb) You are not allowed to view links. Register or Login
Private Sub Ejemplo()
Dim dels(3) As String
Dim result() As String
Const ss As String = "hola+como--andas(((esto====es+una--prueba"
    dels(0) = "+"
    dels(1) = "--"
    dels(2) = "((("
    dels(3) = "===="
   
    'sin preservar delimitadores
    result = MultiSplit7913(ss, dels, False)
    'result = ("hola";"como";"andas";"esto";"es";"una";"prueba")
   
    'preservando delimitadores
    result = MultiSplit7913(ss, dels, True)
    'result = ("hola";"+como";"--andas";"(((esto";"====es";"+una";"--prueba")
End Sub

El Codigo

Code: (vb) You are not allowed to view links. Register or Login
Private Function MultiSplit7913(expression As String, Delimiter() As String, PreserveDel As Boolean) As String()
Dim DelCount    As Long
Dim lExp        As Long
Dim X           As Long
Dim Pos         As Long
Dim DelPos()    As Long
Dim AuxArr()    As String
Dim LastPos     As Long
Dim LastLen     As Long
Dim LastInstr   As Long
 
    expression = expression & Delimiter(0)
    lExp = Len(expression)
    DelCount = UBound(Delimiter)
    ReDim DelPos(lExp)
 
    For X = 0 To DelCount
        Pos = 1
        LastInstr = InStr(Pos, expression, Delimiter(X))
        Do While LastInstr <> 0
            DelPos(LastInstr) = X + 1
            Pos = LastInstr + Len(Delimiter(X)) + Pos
            LastInstr = InStr(Pos, expression, Delimiter(X))
        Loop
    Next
 
    ReDim AuxArr(0)
 
    LastPos = 1
 
    For X = 0 To lExp
        If DelPos(X) <> 0 Then
            ReDim Preserve AuxArr(UBound(AuxArr) + 1)
            If PreserveDel Then
                AuxArr(UBound(AuxArr) - 1) = Mid$(expression, LastPos, X - LastPos)
            Else
                AuxArr(UBound(AuxArr) - 1) = Mid$(expression, LastPos + LastLen, X - LastPos - LastLen)
                LastLen = Len(Delimiter(DelPos(X) - 1))
            End If
            LastPos = X
        End If
    Next
 
    ReDim Preserve AuxArr(UBound(AuxArr) - 1)
 
    MultiSplit7913 = AuxArr
 
End Function

GRACIAS POR LEER!!!
« Last Edit: December 12, 2013, 03:49:31 pm by Expermicid »
"Algunos creen que soy un bot, puede que tengan razon"
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

*Shadow Scouts Team*                                                   You are not allowed to view links. Register or Login

Offline Alex

  • *
  • Moderador Global
  • Posts: 877
  • Actividad:
    0%
  • Country: 00
  • Reputación 9
    • View Profile
    • MI github
    • Email

Re:MultiSplit, un split diferente!

  • on: February 06, 2013, 03:03:32 pm
bastante interesante, para variar un poco del split común, de todos modos es bastante útil.

saludos!