Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 3
Ir a la página 1, 2, 3  Siguiente
 
Cuantas Veces Se Repite Una Cadena En Otra.
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Cuantas Veces Se Repite Una Cadena En Otra. 
 
Hola a todos.
Alguien sabe como contar la cantidad de veces que se repite una cadena dentro de otra?
Podría anidar instr pero ¿No hay una función nativa que haga esto?
Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cuantas Veces Se Repite Una Cadena En Otra. 
 
tincho escribió:  
Hola a todos.
Alguien sabe como contar la cantidad de veces que se repite una cadena dentro de otra?
Podría anidar instr pero ¿No hay una función nativa que haga esto?
Saludos.



Public Sub Form_Open()

Dim iVeces As Integer
Dim i As Integer

 Do
              i = String.InStr("Esto es un texto, esto es es un texto", "es", i + 1) 'original no borrar
              If i > 0 Then
                Inc iVeces
              Endif
              
            Loop Until i = 0

Print "es =" & iVeces

End

 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cuantas Veces Se Repite Una Cadena En Otra. 
 
Si, lo simple es bueno, aunque yo lo compactaria a:


Do
              i = String.InStr("Esto es un texto, esto es es un texto", "es", i + 1) 'original no borrar
              If i Then Inc iVeces else Break   ' si i = 0 es False, sino True
Loop

 




===================
"Los IF son mas rápidos" - autor anónimo
 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cuantas Veces Se Repite Una Cadena En Otra. 
 
Solo por curiosidad señalo esta manera tambien con función externa:

   pagina del wiki italiano
 



 
última edición por vuott el Sabado, 02 May 2020, 13:57; editado 1 vez 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cuantas Veces Se Repite Una Cadena En Otra. 
 
Gracias a todos.
Ayer el la desesperación de la madrugada por hacer que funcione use esto:
'' Function that count the times a substring appear in other string

Public Function StrCount(sWhere As String, sWhich As String) As Integer
  Dim i As Integer
  Dim Cursor As Integer
  Dim Counter As Integer
  i = 1
  Repeat
    Cursor = InStr(sWhere, sWhich, i)
    If Cursor > 0 Then
      Inc Counter
      i = i + Cursor + String.Len(sWhich)
    Endif
  Until InStr(sWhere, sWhich, i) = 0 Or i > String.Len(sWhich)
  Return Counter
End
 

En fin, otra opción.
Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cuantas Veces Se Repite Una Cadena En Otra. 
 
tincho escribió:  
En fin, otra opción.

Eh, sì, varias.
Por ejemplo, creando una función externa:  

Library "/tmp/lib_Occorrenze"

' int Occorrenze(const char *stringa, const char *substr)
' Ritorna il numero di occorrenze di una sottostringa all'interno di una stringa.
Private Extern Occorrenze(stringa As String, substr As String) As Integer


Public Sub Main()

Dim s, su As String
Dim i As Integer

' Va a generare l'apposita libreria dinamica condivisa esterna:
 CreaSo()

' La stringa è la seguente:
 s = "mela pera arancia limone pera banana noce mela fico pera noce"
 
' La sottostringa di cui conoscere il numero di occorrenze:
 su = "pera"
 
 i = Occorrenze(s, su)
 
 Print "Numero occorrenze della sottostringa '"; su; "': "; i
 
End


Private Procedure CreaSo()
 
' Imposta il sorgente della libreria dinamica condivisa esterna:
 File.Save("/tmp/lib_Occorrenze.c", "#include <string.h>" &
           "\n\n" &
           "int Occorrenze(const char *stringa, const char *substr) {" &
           "\n\n" &
           "   int i = 0;" &
           "\n\n" &
           "   do {\n" &
           "      if (stringa = strstr (stringa, substr)) {;\n" &
           "         ++stringa;\n" &
           "         ++i;\n" &
           "      }" &
           "\n   } while (stringa);" &
           "\n\n   return i;\n\n}")
          
 
' Genera la libreria dinamica condivisa esterna:
 Shell "gcc -o /tmp/lib_Occorrenze.so /tmp/lib_Occorrenze.c -shared -fPIC" Wait
 
End

 



 
última edición por vuott el Lunes, 11 May 2020, 16:41; editado 1 vez 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cuantas Veces Se Repite Una Cadena En Otra. 
 
creo que tu codigo tiene virus, Vuott
 




===================
"Los IF son mas rápidos" - autor anónimo
 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cuantas Veces Se Repite Una Cadena En Otra. 
 
tercoIDE:

Citar:

creo que tu codigo tiene virus, Vuott


Son cosas del lenguaje "C"..que lo trae por la calle de la amargura..jejeje.  

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cuantas Veces Se Repite Una Cadena En Otra. 
 
Creo que las opciones que propone Vuott de C son la opción a usar en caso de grandes cantidades de datos por ejemplo al contar las palabras de un libro supongo que C siempre es mas eficiente que gambas.
Tal vez la futura String.Count()  
Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cuantas Veces Se Repite Una Cadena En Otra. 
 
tercoIDE escribió:  
creo que tu codigo tiene virus, Vuott
Virus
Veneni.
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Busco Función Para Saber El Número De Ve... sc0w General 1 Lunes, 08 Marzo 2010, 07:50 Ver último mensaje
alexprox
No hay nuevos mensajes Cuantas Camaras Web Puedo Tener Instalada ... jsbsan Aplicaciones/Fragmentos de Código 6 Jueves, 14 Octobre 2010, 02:10 Ver último mensaje
codificador
No hay nuevos mensajes ¿ Una Cadena Vacía Es Una Subcadena De C... Shell General 2 Jueves, 07 Agosto 2014, 14:01 Ver último mensaje
Shell
No hay nuevos mensajes Funcion Que Liste Todas Las Veces Que Una ... tincho Aplicaciones/Fragmentos de Código 7 Miercoles, 14 Noviembre 2018, 15:10 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 3
Ir a la página 1, 2, 3  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron