Autor Tema: Detectar los espacios (Space) en un String?  (Leído 4836 veces)

0 Usuarios y 1 Visitante están viendo este tema.

ADONAIRAFA

  • Gigabyte
  • ****
  • Mensajes: 291
  • Reputación: +37/-1
  • Que bien se siente al terminar un programa !!!
    • Ver Perfil
Detectar los espacios (Space) en un String?
« en: Febrero 16, 2012, 11:18:21 pm »
Bueno se trata de lo siguiente: supongamos que tenemos un string cualquiera:

Código: (VB) [Seleccionar]
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.

Hay dos tipos de personas: Los que siguen un camino... y los que hacen camino al avanzar !!!

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Detectar los espacios (Space) en un String?
« Respuesta #1 en: Febrero 16, 2012, 11:36:29 pm »
A ver si te sirve esto:

Código: (VB) [Seleccionar]
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
Me encuentras en YAcosta.com

ADONAIRAFA

  • Gigabyte
  • ****
  • Mensajes: 291
  • Reputación: +37/-1
  • Que bien se siente al terminar un programa !!!
    • Ver Perfil
Re:Detectar los espacios (Space) en un String?
« Respuesta #2 en: Febrero 16, 2012, 11:51:57 pm »
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
Hay dos tipos de personas: Los que siguen un camino... y los que hacen camino al avanzar !!!

Virgil Tracy

  • Kilobyte
  • **
  • Mensajes: 64
  • Reputación: +38/-1
    • Ver Perfil
Re:Detectar los espacios (Space) en un String?
« Respuesta #3 en: Febrero 17, 2012, 12:01:42 am »
vb tiene una funcion interna llamada replace, que hace lo que tu quieres

Código: (VB) [Seleccionar]
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

ADONAIRAFA

  • Gigabyte
  • ****
  • Mensajes: 291
  • Reputación: +37/-1
  • Que bien se siente al terminar un programa !!!
    • Ver Perfil
Re:Detectar los espacios (Space) en un String?
« Respuesta #4 en: Febrero 17, 2012, 12:21:20 am »
Gracias a tí también Virgil Tracy !!!  :o :o :o

Ni me acordaba de la vaina esa del método Replace !!!


Saludos !!!
Hay dos tipos de personas: Los que siguen un camino... y los que hacen camino al avanzar !!!

erbuson

  • Kilobyte
  • **
  • Mensajes: 75
  • Reputación: +11/-1
    • Ver Perfil
Re:Detectar los espacios (Space) en un String?
« Respuesta #5 en: Febrero 17, 2012, 02:08:05 pm »
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.


ADONAIRAFA

  • Gigabyte
  • ****
  • Mensajes: 291
  • Reputación: +37/-1
  • Que bien se siente al terminar un programa !!!
    • Ver Perfil
Re:Detectar los espacios (Space) en un String?
« Respuesta #6 en: Febrero 17, 2012, 06:02:44 pm »
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.
Hay dos tipos de personas: Los que siguen un camino... y los que hacen camino al avanzar !!!

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Detectar los espacios (Space) en un String?
« Respuesta #7 en: Febrero 17, 2012, 06:28:46 pm »
Código: (vb) [Seleccionar]
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
Código: [Seleccionar]
Palabra       Posicicion    Proximo
Mi             1             3
mama           4             8
me             9             11
mima           12            0
« última modificación: Febrero 17, 2012, 06:30:30 pm por raul338 »

Virgil Tracy

  • Kilobyte
  • **
  • Mensajes: 64
  • Reputación: +38/-1
    • Ver Perfil
Re:Detectar los espacios (Space) en un String?
« Respuesta #8 en: Febrero 19, 2012, 08:26:50 pm »
¿ Algo asi, como la primera letra de cada palabra en mayuscula y el resto en minuscula? ;D

Código: (VB) [Seleccionar]
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