Cuantas Veces Se Repite Una Cadena En Otra.


Ir a la página 1, 2, 3  Siguiente

Objetivo: 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.

Perfil MP  
Objetivo: 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

Objetivo: 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

Perfil MP  
Objetivo: 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
Perfil MP  
Objetivo: 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.

Perfil MP  
Objetivo: 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
Perfil MP  
Objetivo: Re: Cuantas Veces Se Repite Una Cadena En Otra.
creo que tu codigo tiene virus, Vuott

Perfil MP  
Objetivo: 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

Objetivo: 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.

Perfil MP  
Objetivo: Re: Cuantas Veces Se Repite Una Cadena En Otra.
tercoIDE escribió:  
creo que tu codigo tiene virus, Vuott
Virus
Veneni.

Perfil MP  
Ir a la página 1, 2, 3  Siguiente

Página 1 de 3


  
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

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.7152s (PHP: -84% SQL: 184%)
Consultas SQL: 47 - Debug off - GZIP Activado