Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: ADONAIRAFA en Febrero 16, 2012, 11:18:21 pm
-
Bueno se trata de lo siguiente: supongamos que tenemos un string cualquiera:
Private Sub DeterminarEspacio(s as String)
Dim pos as Integer
s = "Estoy trabajando"
pos = InStr(1, s, " ", vbBinaryCompare) '// Aquí se determina la posición del espacio en blanco (" ")
'
'
'
En Sub
Pero... ¿qué pasaría si el String tuviese más espacios? por ejemplo:
"Estoy Trabajando En Un Proyecto"
Como pueden ver, hay 4 espacios en blanco (separación de palabras), ¿Como podría determinarlos? y luego, como podría lograr el mismo String sin espacios:
"EstoyTrabajandoEnUnProyecto"
Al final, es lo que necesito obtener, les agradezco las sugerencias, recomendaciones, concejos, etc.
Saludos ;D
Manuel F. Borrego S. 8)
Barcelona, Venezuela.
-
A ver si te sirve esto:
Private Function EliminarEspacios(s As String) as String
For i = 1 To Len(s)
If Mid(s, i, 1) <> " " Then
EliminarEspacios = EliminarEspacios & Mid(s, i, 1)
End If
Next i
End Function
-
Yvan !!! Brother !!! ;D
Esa función está más que perfecta !!! Y yo que me pasé toda una mañana dando vueltas y no encontraba la bendita solución !!! >:(
Sencilla y efectiva :o :o :o
Gracias Bro !!!
Saludos y +1 pa' tí !!! ;D
-
vb tiene una funcion interna llamada replace, que hace lo que tu quieres
Option Explicit
Private Sub Form_Load()
Dim c As String
c = "Estoy Trabajando En Un Proyecto Mientras Pienso En Las Suaves Piernas De Mi Novia"
Debug.Print cReplaceSubStr(c, " ", "")
Debug.Print Replace(c, " ", "") '<--- VBA.Replace()
End Sub
Public Function cReplaceSubStr(ByVal c As String, ByVal cSub As String, ByVal cNew As String) As String
Dim nPos As Integer, nStartPos As Integer, cRet As String
nStartPos = 1
nPos = InStr(c, cSub)
Do While nPos > 0
cRet = cRet & _
Mid(c, nStartPos, nPos - nStartPos) & _
cNew
nStartPos = nPos + Len(cSub)
nPos = InStr(nStartPos, c, cSub)
Loop
cRet = cRet & Mid(c, nStartPos)
cReplaceSubStr = cRet
End Function
-
Gracias a tí también Virgil Tracy !!! :o :o :o
Ni me acordaba de la vaina esa del método Replace !!!
Saludos !!!
-
Para obtener el número de espacios, puedes hacerlo con una simple sentencia, y el Replace
Espacios = Len(Cadena) - Len(Replace(Cadena, " ", ""))
Ya que de este modo obtienes el número de espacios eliminados.
-
Muy buena esa también, Erbuson !!! :o
Ahora también busco determinar además, la posición + 1 (en números por supuesto) porque necesito tomar la primera letra de cada palabra luego del espacio en blanco (por supuesto), para ello estoy tomando la función que puso Yvan (YAcosta) en el post !!!
Si saben de otra efectiva y rápida, publíquenla por favor !!!
Saludos a todos !!! y muy agradecido por las respuestas !!!
Manuel F. Borrego S. 8)
Barcelona, Venezuela.
-
Dim i As Integer, ii As Integer ' Variables para recorrer el bucle
Dim code As String ' String original
Dim sActual As String ' Palabra Actual
Dim sSeparador As String
code = "Mi mama me mima"
sSeparador = " "
i = 1
Debug.Print "Palabra", "Posicicion", "Fin"
While i >= ii And Not i = 0
' Obtenemos la linea acutal
ii = InStr(i, code, sSeparador)
If ii = 0 Then
' Ultima linea
sActual = Right$(code, Len(code) - i + Len(sSeparador))
Else
sActual = Mid$(code, i, ii - i)
End If
'------------------------------------
' Tratar el string aca :P
Debug.Print sActual, i, ii
'------------------------------------
If ii = 0 Then
i = ii
Else
i = ii + Len(sSeparador)
End If
Wend
Algo asi use yo para un pequeño "analizador de codigo" que hice hace tiempo. Es como hacer un bucle con split, pero ademas sabiendo en que posición esta!
Salida
Palabra Posicicion Proximo
Mi 1 3
mama 4 8
me 9 11
mima 12 0
-
¿ Algo asi, como la primera letra de cada palabra en mayuscula y el resto en minuscula? ;D
Debug.Print FirstUpperCase("la primera letra de cada palabra en mayuscula, el resto minuscula")
Public Function FirstUpperCase(ByVal cText As String) As String
Dim c1 As String, c2 As String
Dim i As Integer, nLen As Integer, bUpper As Boolean
bUpper = True
nLen = Len(cText)
For i = 1 To nLen
c2 = Mid(LCase(cText), i, 1)
Select Case c2
Case " "
bUpper = True
Case Else
If bUpper Then
c2 = UCase(c2)
bUpper = False
End If
End Select
c1 = c1 & c2
Next
FirstUpperCase = c1
End Function