Stringクラスでは文字列中に含まれる部分文字列の数(同じ文字列がいくつ含まれているか)を計上するメソッドは用意されていません。 以下は部分文字列の計上を行う例です。 Count1ではIndexOfメソッドを用いて部分文字列の探索を繰り返すことで数を計上しています。 Count2ではReplaceメソッドを用いて部分文字列を削除し、減った文字数をもとに計上しています。
文字列に含まれる部分文字列を計上する(Count)
Imports System
Class Sample
Shared Function Count1(ByVal s As String, ByVal substr As String) As Integer
Dim count As Integer = 0
Dim lastIndex As Integer = 0
Do
Dim index As Integer = s.IndexOf(substr, lastIndex)
If index < 0 Then
Return count
Else
count += 1
lastIndex = index + substr.Length
End If
Loop
End Function
Shared Function Count2(ByVal s As String, ByVal substr As String) As Integer
Return (s.Length - s.Replace(substr, Nothing).Length) \ substr.Length
End Function
Shared Sub Main()
Dim s As String = "かごめかごめ かごのなかのとりは いついつでやる"
Console.WriteLine(s)
Console.WriteLine(Count1(s, "かご"))
Console.WriteLine(Count2(s, "かご"))
Console.WriteLine(Count1(s, "いつ"))
Console.WriteLine(Count2(s, "いつ"))
Console.WriteLine(Count1(s, "か"))
Console.WriteLine(Count2(s, "か"))
End Sub
End Class
実行結果
かごめかごめ かごのなかのとりは いついつでやる 3 3 2 2 4 4