Supponiamo di voler trovare quante volte una determinata parola è contenuta in una stringa. Un metodo veloce che mi viene in mente potrebbe essere questo:
mi faccio restituire un array delle parole che compongono la mia stringa, semplicemente utilizzando la funzione
Split() lasciando il separatore di default e cioè lo spazio.
Nella mia funzione farò ciclare tutti gli elementi dell'
Array ottenuto, depurandoli dai caratteri di punteggiatura e confrontandoli con la stringa di cui voglio ottenere il numero di occorrenze.
Un parametro opzionale,
isCaseSensitive, influenzerà il tipo di confronto.
Public Function numOccorrenze(ByVal myStr As String, ByVal myWord As String, Optional ByVal isCaseSensitive As Boolean = False) As Integer
'***********************************************************
' Func: numOccorrenze
' Desc:
' Par : myStr Sringa da verificare
' myWord Stringa da recuperare
' [isCaseSensitive] Boolean indicante se voglio il confronto Case Sensitive
' Ret : Numero di occorrenze di myWord in myStr
' Note: mySimbol E' una stringa contenente l'elenco dei caratteri
' da ignorare nel confronto, tipo la virgola a fine
' parola o il punto ecc.
'***********************************************************
Dim myArray() As String = myStr.Split
Dim mySimbol As String = ",';.: !?"
numOccorrenze = 0
For x As Integer = 0 To UBound(myArray)
'Pulisco l'array dai segni di punteggiatura
For y As Integer = 0 To mySimbol.Length - 1
myArray(x) = myArray(x).Replace(mySimbol.Substring(y, 1), "")
Next
'Confronto la stringa
If isCaseSensitive Then
If myArray(x).CompareTo(myWord) = 0 Then numOccorrenze += 1
Else
If myArray(x).ToUpper.CompareTo(myWord.ToUpper) = 0 Then numOccorrenze += 1
End If
Next
Return numOccorrenze
End Function