Using For
vb

Private Function CountOccurs(ByRef original As String, ByRef match As String) As Integer
Dim mCount As Integer = 0
For i As Integer = 0 To original.Length - 1
i = original.IndexOf(match, i)
If i < 0 Then Exit For
mCount += 1
i += 1
Next
Return mCount
End Function


Using While
vb

Private Function CountOccurs(ByRef original As String, ByRef match As String) As Integer
Dim mCount As Integer = 0
Dim i as integer=0
While i>=0
i = original.IndexOf(match, i)
If i < 0 Then Exit For
mCount += 1
i += 1
end wihile
Return mCount
End Function


Using Do
vb

Private Function CountOccurs(ByRef original As String, ByRef match As String) As Integer
Dim mCount As Integer = 0
Dim i As Integer = 0
Do
i = original.IndexOf(match, i)
If i < 0 Then Exit Do
mCount += 1
i += 1
Loop Until i = original.Length
Return mCount
End Function
End Function


Using Recursion
vb

Private Function CountOccurs(ByRef original As String, ByRef match As String, Optional ByRef i As Integer = 0, Optional ByRef mCount As Integer = 0) As Integer
i = original.IndexOf(match, i)
If i < 0 Then Return mCount
mCount += 1
Return CountOccurs(original, match, i, mCount)
End Function


Using Regular Expression
vb

Private Function CountOccurs(ByRef original As String, ByRef match As String) as integer
Return System.Text.RegularExpressions.Regex.Matches(original, match).Count
End Function