Gambas-it

Gambas3 => Programmazione => Topic aperto da: Gianluigi - 13 Settembre 2017, 13:58:51

Titolo: Funzione per contare le sottostringhe
Inserito da: Gianluigi - 13 Settembre 2017, 13:58:51
Sulla ML di Gambas è apparsa questa domanda, io non credo esista una funzione nativa di Gambas e ho suggerito di farsene una da soli ad esempio:
Codice: [Seleziona]
Private Function CountSubString(value As String, pattern As String, Optional compare As Integer) As Integer '' compare default Sensitive, 1 = Insensitive

  Dim i, n As Integer

  While i <= Len(value)
    i = InStr(value, pattern, i + 1, compare)
    If i = 0 Then Break
    Inc n
  Wend
  Return n

End

Qualche idea migliore?

 :ciao:

P.S. Private solo se inserita nello stesso modulo, naturalmente.  :)
Titolo: Re:Funzione per contare le sottostringhe
Inserito da: vuott - 14 Settembre 2017, 04:12:34
Per ora raffinerei il precedente tuo codice così:

Codice: [Seleziona]
Private Function CountSubString(value As String, pattern As String, Optional compare As Integer) As Integer '' compare default Sensitive, 1 = Insensitive

  Dim i, n As Integer

  Do     ' ...ὁ ἄπειρος κύκλος !

    i = InStr(value, pattern, i + 1, compare)
    If i = 0 Then Break
    Inc n

  Loop

  Return n

End
Titolo: Re:Funzione per contare le sottostringhe
Inserito da: Gianluigi - 14 Settembre 2017, 13:39:29
Per ora raffinerei il precedente tuo codice così:

Ottimo, avevo già notato che ad esempio non serviva l'uguale nella prima valutazione ma non mi si era accesa nessuna lampadina.
Avrei dovuto rendermi conto che la seconda valutazione era sufficiente :ok:
Credo che questa sia la soluzione migliore "via Gambas", altrimenti per quale motivo Minisini avrebbe introdotto nella funzione InStr la possibilità di variare l'inizio...