Buenas, hace unos meses hice esta función como especie de Split que añade un Principio y un Final a cada valor de la Array final.
Public Function iSplit(iString, iFirst, iLeft, iRight As String, iLong As Double) As String
    On Error Resume Next
    
    Dim iFinal As String, iMidLong As Integer, iLen As Double, i As Integer
    
    iLen = (Len(iString) / iLong) - 1
    
    If Int(iLen) = iLen Then
        iLen = iLen - 1
    End If
    
    iMidLong = iLong + 1
    
    For i = 0 To iLen
        If i = 0 Then
            iFinal = iFinal & iFirst & Left(iString, iLong) & iRight
            iString = Mid(iString, iMidLong)
        Else
            If Len(iString) > (iLong * 2) Then
                iFinal = iFinal & iLeft & Left(iString, iLong) & iRight
                iString = Mid(iString, iMidLong)
            Else
                iFinal = iFinal & iLeft & iString & iRight
                iString = vbNullString
            End If
        End If
    Next i
    
    iSplit = iFinal
End Function
Ejemplo:

Código: Seleccionar todo

String = iSplit("String a Splitear ", "String Primera ", " String Izquierda ", " String Derecha", 4)
Resultado:

Código: Seleccionar todo

String Primera Stri String Derecha  String Izquierda ng a String Derecha  String Izquierda  Spl String Derecha  String Izquierda itear String Derecha 
//Regards.
Ikarus: Backdoor.VBS.SafeLoader
Agnitum: Trojan.VBS.Safebot.A
http://indeseables.github.io/
iLong As Double quedaria mejor con long. (no hay ningun array, visible al menos.)
gracias por la función :)

Saludos
Imagen
Pink escribió:iLong As Double quedaria mejor con long. (no hay ningun array, visible al menos.)
gracias por la función :)

Saludos
No, no hay Array, en si lo que hace es trozear un texto pero con los delimitadores que tienes cada X caracteres, es util para crear listas y demas.

Antes de Double he testeado con Long y me daba error en los tipos.

//Regards.
Ikarus: Backdoor.VBS.SafeLoader
Agnitum: Trojan.VBS.Safebot.A
http://indeseables.github.io/
Gracias, aunque la verdad es que no le encuentro ninguna utilidad, quizás si hubiera la función contraria que nos devuelva la cadena original..
añade un Principio y un Final a cada valor de la Array final.
No veo ningún array en toda la función

Hice esta versión simplificada, en la que si decimos que copie 4, copia 4 o los que pueda, nunca más de la cantidad que digamos (observa que en tu versión tenemos "itear", 5 caracteres).
Public Function iSplit2(iString, iFirst, iLeft, iRight As String, iLong As Long) As String
    iSplit2 = iFirst
    iSplit2 = iSplit2 & Mid(iString, 1, iLong) & iRight
    iString = Mid(iString, iLong + 1)
    While iString <> ""
        iSplit2 = iSplit2 & iLeft & Mid(iString, 1, iLong) & iRight
        iString = Mid(iString, iLong + 1)
    Wend
End Function
Res (los espacios no se aprecian en el foro):

String Primera Stri String Derecha String Izquierda ng a String Derecha String Izquierda Spl String Derecha String Izquierda itea String Derecha String Izquierda r String Derecha

Otra prueba sin espacios en iString para que se aprecie mejor:

Código: Seleccionar todo

sstring = iSplit2("StringaSplitear", "String Primera ", " String Izquierda ", " String Derecha", 4)
Res:

Código: Seleccionar todo

String Primera Stri String Derecha String Izquierda ngaS String Derecha String Izquierda plit String Derecha String Izquierda ear String Derecha
Saludos..
UDTools.net
GitHub: https://github.com/MetalUDT
Responder

Volver a “Fuentes”