Autor |
Mensaje |
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Cuantas Veces Se Repite Una Cadena En Otra.
tincho escribió: supongo que C siempre es mas eficiente que gambas.
...más rapido.
|
#11 Sabado, 02 May 2020, 23:49 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Cuantas Veces Se Repite Una Cadena En Otra.
He intentado hacerlo con recursividad.
Aunque no me quedo contento.
'Global variable dependency with the first version of the function
Private counter As Integer
Public Sub Main()
Dim $sentence As String
Dim $find As String
$sentence = "Esto es un texto, esto es un texto, esto es un texto."
$find = "texto"
Print StrCountV2($sentence, $find)
End
'' Function that count the times a substring appear in other string
Public Function StrCountV1(sWhere As String, sWhich As String) As Integer
Dim $pos As Integer
$pos = String.InStr(sWhere, sWhich)
If $pos > 0 Then
counter += 1
sWhere = String.Mid(sWhere, $pos + 1)
Return StrCountV1(sWhere, sWhich)
Else
Return counter
Endif
End
'' Function that count the times a substring appear in other string
Public Function StrCountV2(sWhere As String, sWhich As String, Optional $counter As Integer = 0) As Integer
Dim $pos As Integer
$pos = String.InStr(sWhere, sWhich)
If $pos > 0 Then
$counter += 1
sWhere = String.Mid(sWhere, $pos + 1)
Return StrCountV2(sWhere, sWhich, $counter)
Else
Return $counter
Endif
End
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#12 Lunes, 04 May 2020, 22:12 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Cuantas Veces Se Repite Una Cadena En Otra.
No veo necesidad de usar expresiones regulares para algo sencillo, pero es una posibilidad.
El código se vuelve complicado para algo tan trivial.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#13 Lunes, 04 May 2020, 22:45 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Cuantas Veces Se Repite Una Cadena En Otra.
Quisiera haber podido hacer esto al igual que en Python.
import re
texto = "Esto es un texto, esto es un texto, esto es un texto."
y = re.findall('esto es un texto', texto)
print (y)
Resultado:
Citar:
['esto es un texto', 'esto es un texto']
Solo es cuestión de aplicar conocer la longitud de la lista para saber cuantas veces se repite.
Como habréis observado ese método no existe en las regex del componente de expresiones regulares de Gambas.
Pero es como una función. Creo que hice una parecida en su día para gambas, muy simple. En esta función
está basada la que he aplicado para el problema.
Prácticamente con más potencia. Es como un find pero a lo bestia, ya que encuentra todas las palabras iguales de una frase.
No es una extracción.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#14 Lunes, 04 May 2020, 22:56 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Cuantas Veces Se Repite Una Cadena En Otra.
Shell escribió: Quisiera haber podido hacer esto al igual que en Python.
import re
texto = "Esto es un texto, esto es un texto, esto es un texto."
y = re.findall('esto es un texto', texto)
print (y)
Resultado:
Citar:
['esto es un texto', 'esto es un texto']
Solo es cuestión de aplicar conocer la longitud de la lista para saber cuantas veces se repite.
Como habréis observado ese método no existe en las regex del componente de expresiones regulares de Gambas.
Pero es como una función. Creo que hice una parecida en su día para gambas, muy simple. En esta función
está basada la que he aplicado para el problema.
Prácticamente con más potencia. Es como un find pero a lo bestia, ya que encuentra todas las palabras iguales de una frase.
No es una extracción.
Saludos
Si no conozco python pero una vez me dijeron que el manejo de strings en dicho lenguajes es espectacular.
Tal vez en gambas falte un poco de pulido en estos temas pero con las funciones que todos hemos puesto aquí, pot lo menos esto de contar palabras ya existe el parche, jeje
¿Lo que me gustria saber es como ampliar la clase strings de gambas?
Saludos.
|
#15 Martes, 05 May 2020, 12:11 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Cuantas Veces Se Repite Una Cadena En Otra.
Tincho:
Citar:
Si no conozco python pero una vez me dijeron que el manejo de strings en dicho lenguajes es espectacular.
Tal vez en gambas falte un poco de pulido en estos temas pero con las funciones que todos hemos puesto aquí, pot lo menos esto de contar palabras ya existe el parche, jeje
Se puede ver el código re.py de Python. Pero el problema es que este llama a otro y resulta "lioso".
https://github.com/python/cpython/blob/3.8/Lib/re.py
Mortal.
Citar:
¿Lo que me gustaria saber es como ampliar la clase strings de gambas?
¿ Qué te parece heredando la clase String ?. Ampliarla y luego crear un componente.
Prueba con añadir tu función a la clase heredada. Pero me parece que para una sola función puede ser poco.
Mejor crear un componente nuevo. Librería (si compensa más). Toca repasar.
En su día estuvimos creando algo parecido que recopilaba funciones interesantes.
¿ Qué fue ?. ¿ Una librería ?.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#16 Martes, 05 May 2020, 20:23 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Cuantas Veces Se Repite Una Cadena En Otra.
Shell escribió: ...¿ Qué te parece heredando la clase String ?. Ampliarla...
Me parece una buena idea lo voy a intentar.
Saludos.
|
#17 Martes, 05 May 2020, 20:39 |
|
|
tercoIDE
Analista Programador
Registrado: Noviembre 2013
Mensajes: 713
Edad: 54
|
Re: Cuantas Veces Se Repite Una Cadena En Otra.
y porque no hacen un benchmark?
=================== "Los IF son mas rápidos" - autor anónimo
|
#18 Jueves, 07 May 2020, 16:33 |
|
|
tercoIDE
Analista Programador
Registrado: Noviembre 2013
Mensajes: 713
Edad: 54
|
Re: Cuantas Veces Se Repite Una Cadena En Otra.
vuott escribió: tincho escribió: supongo que C siempre es mas eficiente que gambas.
...más rapido.
mucho mas, C es 10 veces mas rapido que gambas + Fast y 1000 veces que gambas solo
=================== "Los IF son mas rápidos" - autor anónimo
|
#19 Jueves, 07 May 2020, 16:34 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Cuantas Veces Se Repite Una Cadena En Otra.
tercoIDE escribió: y porque no hacen un benchmark?
Buena idea, imagino que te referís a algo así como lo que hiciste con paint y cairo. voy a ver como esta hecho.
Saludos.
última edición por tincho el Jueves, 07 May 2020, 16:36; editado 1 vez
|
#20 Jueves, 07 May 2020, 16:36 |
|
|
|