https://foro.gambas-es.org/viewtopic.php?f=4&t=8029&p=48363#p48363
-----------------------------------
Guizans
Miercoles, 06 May 2020, 21:23

Re: Extendiendo La Clase String
-----------------------------------
Hola.

Mira que casualidad que necesité una función igual a esa hace poco, y también cree una clase extendida de String. [code linenumbers=false syntax=gambas]
Public Function Count(palabra As String, caracter As String, Optional inicio As Integer = 1, Optional final As Integer = 0) As Integer ''Devuelve el número de coincidencias de una subcadena en el rango [inicio, fin].
                                                                                                                                       
  Dim longitud As Integer
  Dim cortado As New String[]
  Dim posicion As Integer[]
  Dim palabraS As String
  
  longitud = String.Len(palabra)
  If final = 0 Then final = longitud
  
  palabraS = String.Mid$(palabra, inicio, final)
  
  posicion = FindNumber(palabraS, caracter)
  
  For Each a As Integer In posicion
    cortado.Add(String.Mid$(palabraS, a, String.Len(caracter)))
  Next
  
  Return cortado.Length
  
End

Public Function FindNumber(palabra As String, sufijo As String) As Integer[]  ''Encuentra en que posiciones de un string esta el sufijo devolviendo un array que contendrá las posiciones
  
  Dim a As Integer
  Dim pos As Integer = 0
  Dim posicion As New Integer[]
  
  While True
    a = InStr(palabra, sufijo, pos)
    If a = 0 Then
      Break
    Else
      posicion.Add(a)
      pos = a + 1
    Endif
  Wend
  
  Return posicion
  
End
[/code]

En este caso si que devuelve bien el número de coincidencias del ejemplo de cogier.

Un saludo.


