Autor
|
Tema: como adicionar espacios en una cadena de texto? (Leído 4,922 veces)
|
byway
Desconectado
Mensajes: 181
^^,
|
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
|
usa mid() para extraer parte de la cadena y en un string temporal vas armando el string con el espacio.
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
ammm lo tomo algo asi como reto por que ando algo aburrido: 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: 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 am por BlackZeroX (Astaroth) »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
byway
Desconectado
Mensajes: 181
^^,
|
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: 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
|
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
Yo hice esta sin nada temporal todo in the fly : 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
s = "12345678901" Call WithSpace(s, 2, 5) = "12 34 56 78 90 1"
s = "12345678901" Call WithSpace(s, 4, 3) = "1234 5678 901"
s = "12345678901" Call WithSpace(s, 6, 2) = "123456 78901"
|
|
« Última modificación: 17 Noviembre 2011, 20:44 pm por RHL »
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
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
|
The Dark Shadow is my passion.
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
@RHL Corta y precisa.
Sangrientas Lunas!¡.
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
@byway Usa el for con Step 2 para que vaya de 2 en 2 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 pm por raul338 »
|
En línea
|
|
|
|
x64core
Desconectado
Mensajes: 1.908
|
@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 @RHL Corta y precisa.
Sangrientas Lunas!¡.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Borrar espacios de una cadena
Java
|
GaLaN GaLaNaSo 3000
|
0
|
4,243
|
5 Septiembre 2004, 12:53 pm
por GaLaN GaLaNaSo 3000
|
|
|
Como cifrar en MD5 una cadena de texto en VB?
Programación Visual Basic
|
Soporte_88
|
1
|
5,067
|
4 Agosto 2005, 20:13 pm
por {_The_Alwar_}
|
|
|
quitar espacios en cadena ?
« 1 2 3 »
Programación C/C++
|
Darioxhcx
|
25
|
27,608
|
27 Julio 2010, 01:26 am
por Littlehorse
|
|
|
¿Cómo cortar una cadena string separado por espacios?
.NET (C#, VB.NET, ASP)
|
Meta
|
6
|
6,037
|
4 Diciembre 2015, 06:51 am
por Meta
|
|
|
[C++] ¿Cómo me puede leer un cin de una cadena de texto sin contar espacios?
Programación C/C++
|
DeIMachine
|
2
|
2,736
|
17 Enero 2016, 20:20 pm
por DeIMachine
|
|