elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 03:11  


Tema destacado: Personaliza-Escoge el diseño del foro que más te guste.

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo, raul338)
| | |-+  como adicionar espacios en una cadena de texto?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: como adicionar espacios en una cadena de texto?  (Leído 841 veces)
byway

Desconectado Desconectado

Mensajes: 177


^^,


Ver Perfil
como adicionar espacios en una cadena de texto?
« en: 17 Noviembre 2011, 07:35 »

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.


En línea
seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.214



Ver Perfil WWW
Re: como adicionar espacios en una cadena de texto?
« Respuesta #1 en: 17 Noviembre 2011, 08:45 »

usa mid() para extraer parte de la cadena y en un string temporal vas armando
el string con el espacio.


En línea

Mucha gente, especialmente la ignorante desea castigarte por decir la verdad, por ser correcto, por ser tú. Nunca te disculpes por ser correcto, o por estar años delante de tu tiempo.
Si estas en lo cierto, y lo sabes, que hable tu razón. Incluso si eres una minoria de uno solo, la verdad sigue siendo la verdad. M. Gandhi
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.831


I'Love...!¡.


Ver Perfil WWW
Re: como adicionar espacios en una cadena de texto?
« Respuesta #2 en: 17 Noviembre 2011, 10:13 »

ammm lo tomo algo asi como reto por que ando algo aburrido:

Código
 
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
 
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!¡.
« Última modificación: 17 Noviembre 2011, 10:19 por BlackZeroX (Astaroth) » En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
byway

Desconectado Desconectado

Mensajes: 177


^^,


Ver Perfil
Re: como adicionar espacios en una cadena de texto?
« Respuesta #3 en: 17 Noviembre 2011, 20:04 »

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
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.
En línea
RHL


Conectado Conectado

Mensajes: 968


mental


Ver Perfil
Re: como adicionar espacios en una cadena de texto?
« Respuesta #4 en: 17 Noviembre 2011, 20:38 »

Yo hice esta
sin nada temporal todo in the fly  >:D:

Código
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
s = "12345678901"
Call WithSpace(s, 2, 5)
 
= "12     34     56     78     90     1"
 

Código
s = "12345678901"
Call WithSpace(s, 4, 3)
 
= "1234   5678   901"
 


Código
s = "12345678901"
Call WithSpace(s, 6, 2)
 
= "123456  78901"


 
« Última modificación: 17 Noviembre 2011, 20:44 por RHL » En línea
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.831


I'Love...!¡.


Ver Perfil WWW
Re: como adicionar espacios en una cadena de texto?
« Respuesta #5 en: 17 Noviembre 2011, 20:46 »


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!¡.
En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.831


I'Love...!¡.


Ver Perfil WWW
Re: como adicionar espacios en una cadena de texto?
« Respuesta #6 en: 17 Noviembre 2011, 21:23 »

@RHL
Corta y precisa.

Sangrientas Lunas!¡.
En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
raul338
Moderador
***
Conectado Conectado

Mensajes: 2.371


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: como adicionar espacios en una cadena de texto?
« Respuesta #7 en: 17 Noviembre 2011, 22:42 »

@byway
Usa el for con Step 2 para que vaya de 2 en 2 :P

Código
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
 
« Última modificación: 17 Noviembre 2011, 22:57 por raul338 » En línea

RHL


Conectado Conectado

Mensajes: 968


mental


Ver Perfil
Re: como adicionar espacios en una cadena de texto?
« Respuesta #8 en: 17 Noviembre 2011, 22:59 »

@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

@RHL
Corta y precisa.

Sangrientas Lunas!¡.
>:D
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines