Autore Topic: Funzione per contare le sottostringhe  (Letto 54 volte)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 1.837
  • Tonno verde
    • Mostra profilo
Funzione per contare le sottostringhe
« il: 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.  :)
« Ultima modifica: 13 Settembre 2017, 14:03:29 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Senatore Gambero
  • ******
  • Post: 6.683
    • Mostra profilo
Re:Funzione per contare le sottostringhe
« Risposta #1 il: 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
« Ultima modifica: 14 Settembre 2017, 04:13:13 da vuott »
" Chi non vede il non senso del mondo, è vano a sua volta. "

(B. Pascal, 1623 – 1662)

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 1.837
  • Tonno verde
    • Mostra profilo
Re:Funzione per contare le sottostringhe
« Risposta #2 il: 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...
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro