Stringクラスでは文字列中に含まれる部分文字列の数(同じ文字列がいくつ含まれているか)を計上するメソッドは用意されていません。 以下は部分文字列の計上を行う例です。 Count1ではIndexOfメソッドを用いて部分文字列の探索を繰り返すことで数を計上しています。 Count2ではReplaceメソッドを用いて部分文字列を削除し、減った文字数をもとに計上しています。
文字列に含まれる部分文字列を計上する(Count)
using System;
class Sample {
static int Count1(string s, string substr)
{
for (int count = 0, lastIndex = 0;; count++) {
int index = s.IndexOf(substr, lastIndex);
if (index < 0) {
return count;
}
else {
lastIndex = index + substr.Length;
}
}
}
static int Count2(string s, string substr)
{
return (s.Length - s.Replace(substr, null).Length) / substr.Length;
}
static void Main()
{
var s = "かごめかごめ かごのなかのとりは いついつでやる";
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, "か"));
}
}
実行結果
かごめかごめ かごのなかのとりは いついつでやる 3 3 2 2 4 4