Home Page Home Page Tips & Tricks Calcolare il numero di occorrenze in una stringa con VB.NET

Calcolare il numero di occorrenze in una stringa con VB.NET


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.

Codice .NET n°1
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

Copyright © dotNetHell.it 2002-2018
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5