Test Foro de elhacker.net SMF 2.1

Programación => .NET (C#, VB.NET, ASP) => Programación General => Programación Visual Basic => Mensaje iniciado por: byway en 17 Noviembre 2011, 07:35 AM

Título: como adicionar espacios en una cadena de texto?
Publicado por: byway en 17 Noviembre 2011, 07:35 AM
buenas ... hace tiempos no hago nada con visual basic, por el trabajo .. mi problema es como puedo adicionar espacios a una cadena de texto, por ejemplo a la cadena 1234567890 adicionar espacios cada 2 digitos para que quede asi :

12 34 56 78 90

trate de usar la funcion split pero como crear un delimitador..
pienso que leyendo toda la cadena y recorrer cada 2 caracteres y adiconar un espacio y luego sumarle 2 caracteres mas y asi hasta el final de toda la cadena, pero me pierdo en eso de recorrer 2 caracteres y pausarlo para adicionar una espacio.

toda sugerencia es bienvenida.
Título: Re: como adicionar espacios en una cadena de texto?
Publicado por: seba123neo en 17 Noviembre 2011, 08:45 AM
usa mid() para extraer parte de la cadena y en un string temporal vas armando
el string con el espacio.
Título: Re: como adicionar espacios en una cadena de texto?
Publicado por: BlackZeroX en 17 Noviembre 2011, 10:13 AM
ammm lo tomo algo asi como reto por que ando algo aburrido:

Código (Vb) [Seleccionar]


Private Function spaceWidth(ByRef sStr As String, ByVal lLnWord As Long, ByVal lLenSpace As Long) As Long
' // La funcion retorna la cantidad de ESPACIOS entre palabras... retorna -1 cuando hay un error...
Dim sTmp    As String
Dim lSize   As Long
Dim i       As Long
Dim j       As Long
   
    spaceWidth = -1     '   **  Codigo de Error de retorno.
    If (lLnWord <= &H0) Then Exit Function
   
    '   **  Calculamos las separaciones requeridas.
    lSize = (Len(sStr) \ lLnWord)
    If (lSize <= &H1) Or (lLenSpace = &H0) Then '   //  Dimensiones (si hay >=2 grupos calculamos, de lo contrario cancelamos).
        Exit Function
    End If
    '   **  Cantidad de Dimenciones (Espacios entre "Palabras")...
    spaceWidth = (lSize - 1)
    ' **  Longitud del buffer requerido...
    lSize = ((lSize * lLnWord) + ((lSize - 1) * lLenSpace))
   
    '   ******************************
    '   **  Si es de longitudes errones este trozo corrije eso...
    '   **      sStr = "12345678904"
    '   **      spaceWidth sStr, 2, 2
    '   ******************************
    j = (Len(sStr) Mod lLnWord)
    If Not (j = &H0) Then
        spaceWidth = (spaceWidth + 1) ' **  Cantidad de Dimenciones (Espacios entre "Palabras")...
        lSize = lSize + j + lLenSpace ' **  Longitud del buffer requerido...
    End If
    '   **  Buffer
    sTmp = Space$(lSize)
    '   **  Empresamos a separar las "Palabras" en las longitudes dadas...
    j = 1
    For i = 1 To lSize Step (lLnWord + lLenSpace)
        Mid$(sTmp, i, lLnWord) = Mid$(sStr, j, lLnWord)
        j = j + lLnWord
    Next
    sStr = sTmp '   **  Seria mejor un metodo de intercambio de Punteros asi este proceso sera mas rapido...
End Function



ejemplo:

Código (Vb) [Seleccionar]


Private Sub Form_Load()
Dim sStr        As String
    sStr = "12345678904"
    MsgBox sStr
   
   
    spaceWidth sStr, 50, 10
    MsgBox sStr
   
    sStr = "12345678904"
    spaceWidth sStr, 0, 10 ' // Retorna la funcion -1 y es por que hay un error de parametros...
    MsgBox sStr
   
    sStr = "12345678904"
    spaceWidth sStr, 5, 10
    MsgBox sStr
   
    sStr = "12345678904"
    spaceWidth sStr, 2, 1
    MsgBox sStr
End Sub



Dulces Lunas!¡.
Título: Re: como adicionar espacios en una cadena de texto?
Publicado por: byway en 17 Noviembre 2011, 20:04 PM
Cita de: seba123neo en 17 Noviembre 2011, 08:45 AM
usa mid() para extraer parte de la cadena y en un string temporal vas armando
el string con el espacio.


es lo que hize luego de postear mi problemita, pero igual me pierda jajaja:

Código (vb) [Seleccionar]

Dim strCadena As String
Dim strTemp As String
Dim i As Integer

strCadena = Text1.Text

For i = 1 To Len(strCadena)
    strTemp = Mid(strCadena, i, 2)
    Text2.Text = Text2.Text & (strTemp & " ")
Next


esto funciona bien cuando solo es para separar un caracter, pero para dos no.
estuve revisando la funcion creada por BlackZeroX y esta bien hecha, pero como que tiene muchas lineas, pensaba en algo mas simple pero ni modo ..

Saludos.
Título: Re: como adicionar espacios en una cadena de texto?
Publicado por: x64core en 17 Noviembre 2011, 20:38 PM
Yo hice esta
sin nada temporal todo in the fly  >:D:

Código (vb) [Seleccionar]
Private Sub WithSpace(byref Strs As String, ByVal Chars As Long, ByVal Spaces As Long)
Dim n           As Long
Dim l           As Long

   l = Len(Strs)
   If Not Chars > &H0 Then Exit Sub
   If Not Spaces > &H0 Then Exit Sub
   
   n = Chars
   Do While (n < l)
       Strs = Strs & Space$(Spaces): l = l + Spaces
       Mid$(Strs, n + &H1, l) = (Space$(Spaces) & Mid$(Strs, n + &H1, l))
       n = n + Chars + Spaces
   Loop

End Sub



Código (vb) [Seleccionar]

s = "12345678901"
Call WithSpace(s, 2, 5)

= "12     34     56     78     90     1"


Código (vb) [Seleccionar]

s = "12345678901"
Call WithSpace(s, 4, 3)

= "1234   5678   901"



Código (vb) [Seleccionar]
s = "12345678901"
Call WithSpace(s, 6, 2)

= "123456  78901"



Título: Re: como adicionar espacios en una cadena de texto?
Publicado por: BlackZeroX en 17 Noviembre 2011, 20:46 PM
Cita de: byway en 17 Noviembre 2011, 20:04 PM

estuve revisando la funcion creada por BlackZeroX y esta bien hecha, pero como que tiene muchas lineas, pensaba en algo mas simple pero ni modo ..


El codigo contempla TODOS los errores posibles... si no quieres tantas lineas pues solo quita lo que no quieras...

Dulces Lunas!¡.
Título: Re: como adicionar espacios en una cadena de texto?
Publicado por: BlackZeroX en 17 Noviembre 2011, 21:23 PM
@RHL
Corta y precisa.

Sangrientas Lunas!¡.
Título: Re: como adicionar espacios en una cadena de texto?
Publicado por: raul338 en 17 Noviembre 2011, 22:42 PM
@byway
Usa el for con Step 2 para que vaya de 2 en 2 :P

Código (vb) [Seleccionar]

Dim strCadena As String
Dim strTemp As String
Dim i As Integer

strCadena = Text1.Text

For i = 1 To Len(strCadena) Step 2
    strTemp = Mid(strCadena, i, 2)
    Text2.Text = Text2.Text & (strTemp & " ")
Next
Título: Re: como adicionar espacios en una cadena de texto?
Publicado por: x64core en 17 Noviembre 2011, 22:59 PM
@byway
El hecho de que la funcion de BlackZeroX tenga varias lineas no significa que sea lenta
de hecho es la mas rapida y super eficiente  >:D

Cita de: BlackZeroX (Astaroth) en 17 Noviembre 2011, 21:23 PM
@RHL
Corta y precisa.

Sangrientas Lunas!¡.
>:D