Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

Cuantas Veces Se Repite Una Cadena En Otra.

Cuantas Veces Se Repite Una Cadena En Otra.
Artículo
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 usuario Enviar mensaje privado  
tincho [ Viernes, 01 May 2020, 23:49 ]
 


Cuantas Veces Se Repite Una Cadena En Otra.
Comentarios
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




 
v3ctor - Ver perfil del usuario Enviar mensaje privado  
v3ctor [ Sabado, 02 May 2020, 04:49 ]
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




 
tercoIDE - Ver perfil del usuario Enviar mensaje privado  
tercoIDE [ Sabado, 02 May 2020, 12:32 ]
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 usuario Enviar mensaje privado  
vuott [ Sabado, 02 May 2020, 13:55 ]
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 usuario Enviar mensaje privado  
tincho [ Sabado, 02 May 2020, 14:44 ]
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 usuario Enviar mensaje privado  
vuott [ Sabado, 02 May 2020, 15:59 ]
Responder citando    Descargar mensaje  
Mensaje Re: Cuantas Veces Se Repite Una Cadena En Otra. 
 
creo que tu codigo tiene virus, Vuott



 
tercoIDE - Ver perfil del usuario Enviar mensaje privado  
tercoIDE [ Sabado, 02 May 2020, 22:10 ]
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



 
Shell - Ver perfil del usuario Enviar mensaje privado  
Shell [ Sabado, 02 May 2020, 22:14 ]
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 usuario Enviar mensaje privado  
tincho [ Sabado, 02 May 2020, 23:45 ]
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 usuario Enviar mensaje privado  
vuott [ Sabado, 02 May 2020, 23:46 ]
Mostrar mensajes anteriores:    
 
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


 



 

cron