Cuantas Veces Se Repite Una Cadena En Otra.


Goto page 1, 2, 3  Next

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

Profile PM  
Subject: 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

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

Profile PM  
Subject: 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

Last edited by vuott on Saturday, 02 May 2020, 13:57; edited 1 time in total
Profile PM  
Subject: 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.

Profile PM  
Subject: 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

Last edited by vuott on Monday, 11 May 2020, 16:41; edited 1 time in total
Profile PM  
Subject: Re: Cuantas Veces Se Repite Una Cadena En Otra.
creo que tu codigo tiene virus, Vuott

Profile PM  
Subject: 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

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

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

Profile PM  
Goto page 1, 2, 3  Next

Page 1 of 3


  
You cannot post new topics
You cannot reply to topics
You cannot edit your posts
You cannot delete your posts
You cannot vote in polls
You cannot attach files
You can download files
You cannot post calendar events

   

This is a "Lo-Fi" version of our main content. To view the full version with more information, formatting and images, please click here.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Generation Time: 0.1118s (PHP: -5% SQL: 105%)
SQL queries: 25 - Debug Off - GZIP Enabled