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.
Cuantas Veces Se Repite Una Cadena En Otra.
Objetivo: Re: Cuantas Veces Se Repite Una Cadena En Otra.
Si, lo simple es bueno, aunque yo lo compactaria a:
Objetivo: Re: Cuantas Veces Se Repite Una Cadena En Otra.
última edición por vuott el Sabado, 02 May 2020, 13:57; editado 1 vez
última edición por vuott el Sabado, 02 May 2020, 13:57; editado 1 vez
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:
En fin, otra opción.
Saludos.
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
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.
Objetivo: Re: Cuantas Veces Se Repite Una Cadena En Otra.
Eh, sì, varias.
Por ejemplo, creando una función externa:
última edición por vuott el Lunes, 11 May 2020, 16:41; editado 1 vez
tincho escribió:
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
' 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
Objetivo: Re: Cuantas Veces Se Repite Una Cadena En Otra.
tercoIDE:
Son cosas del lenguaje "C"..que lo trae por la calle de la amargura..jejeje.
Saludos
Citar:
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.
Tal vez la futura String.Count()
Saludos.
Página 1 de 3
No puede crear mensajesNo 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