Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

una subcadena dentro de una cadena

Estas en el tema de una subcadena dentro de una cadena en el foro de Visual Basic clásico en Foros del Web. Hola, he de realizar un script en Visual Basic que cuente el número de veces que aparece una subcadena en una cadena. El mensaje debe ...
  #1 (permalink)  
Antiguo 21/05/2010, 15:12
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
una subcadena dentro de una cadena

Hola, he de realizar un script en Visual Basic que cuente el número de veces que aparece una subcadena en una cadena. El mensaje debe mostrar lo siguiente:
La subcadena aparece: x veces
He de introducir la cadena de teclado.
Ej: casa La letra a aparece 2 veces.
No tengo ni idea de como hacerlo. Si me podéis echar una mano. Gracias.
  #2 (permalink)  
Antiguo 21/05/2010, 15:33
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 15 años
Puntos: 53
Respuesta: una subcadena dentro de una cadena

Hola, creo que algo así podría servirte

Private Function CuantasVeces(Palabra As String, Frase As String) As Integer
Dim c As Integer
For c = 1 To Len(Frase)
If UCase$(Palabra) = UCase$(Mid$(Frase, c, Len(Palabra))) Then CuantasVeces = CuantasVeces + 1
Next
End Function


aunque probablemente no sea la única solución.
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #3 (permalink)  
Antiguo 22/05/2010, 10:16
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: una subcadena dentro de una cadena

Puedes decirme otra manera más sencilla es que el Private Function no lo he dado, si puede ser usando option explicit y el inputbox para introducir la cadena de teclado. Gracias
  #4 (permalink)  
Antiguo 22/05/2010, 12:10
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 15 años
Puntos: 53
Respuesta: una subcadena dentro de una cadena

No tienes porque usar una Function, ya que puedes copiar el código necesario dentro de un Command que me imagino que vas a utilizar para iniciar la búsqueda.

Si no es así, es mejor que pongas tu código para que pueda corregirte lo que haces mal ya que de esta manera aprenderás algo y si yo te pongo el código tu lo copiarás y no aprenderás, por tanto los dos estaremos perdiendo el tiempo.
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...
  #5 (permalink)  
Antiguo 23/05/2010, 09:32
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 18 años, 3 meses
Puntos: 29
Respuesta: una subcadena dentro de una cadena

Todo depende de los comandos que si que hayas estudiado.

Esto sería el script, suponiendo que hayas estudiado InputBox, MsgBox, For Next, If Then, Mid y Len.

Código vb:
Ver original
  1. ' Forzamos la declaracion de variables
  2. Option Explicit
  3.  
  4. ' Declaramos las variables que vamos a necesitar
  5. Dim F
  6. Dim Texto
  7. Dim Buscar
  8. Dim CuantasVeces
  9.  
  10. ' Pedimos los textos para trabajar:
  11. Buscar=InputBox("Texto a buscar")
  12. Texto=InputBox ("Texto donde buscar")
  13.  
  14. ' Y si el texto a buscar es menor o igual que el texto principal se buscan las coincidencias
  15. If Len(Texto)>=Len(Buscar) Then
  16.  
  17.   ' creamos un bucle desde 1 hasta la longitud del texto menos la longitud del texto a buscar menos 1.
  18.  'De este modo no se intenta buscar el texto a partir de la posicion en que ya no se puede extraer
  19.  'un trozo del tamaño necesario.
  20.  For F = 1 To Len(Texto) - (Len(Buscar) - 1)
  21.  
  22.     ' y vamos comparando bloques de texto de la misma longitud del texto a buscar
  23.    If Mid(Texto, F, Len(Buscar)) = Buscar Then CuantasVeces = CuantasVeces + 1
  24.  
  25.   Next
  26.  
  27.   ' Y después mostramos el resultado
  28.  MsgBox "El texto está " & CuantasVeces & " veces"
  29.  
  30. End If

Saludos
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!

Etiquetas: subcadena, cadenas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:29.