ある文字列内の特定の文字列の個数を取得する

ある文字列から特定の文字列の個数を取得する関数なんて普通にありそうですが、意外とないっぽいので作ってみました。

具体的には”かえるぴょこぴょこみぴょこぴょこ”の中の”ぴょこ”の個数を取得する(この場合だと「4」を返す)みたいな感じ。
ある文章の中のある単語の個数が知りたいときに使えます。


//ある文字列内の特定の文字列の個数を取得する関数
int GetWordNum(string original, string search){
//特定の文字列を元の文字列から消去
string tmp = original.Replace (search, "");
//文字列の長さの差を特定の文字列の長さで割る
return (original.Length - tmp.Length) / search.Length;
}


//利用例
string s1 = "かえるぴょこぴょこみぴょこぴょこ";
string s2 = "ぴょこ";
int s2_num = GetWordNum (s1, s2);
Debug.Log (s2_num);  //=> 4

いろいろやり方はありますが、これが一番シンプルでやりやすいかなと思います。

ちなみにこれを応用すると、テキストの行数なんかも取得することができます。


string s1 = "一行目\n二行目です\n三行目だよ";
string s2 = "\n";
//s1の文頭文末に改行がある場合は消去しておく
s1 = s1.Trim();
//行数は改行の数+1
int lineNum = GetWordNum (s1, s2) + 1;
Debug.Log (lineNum);  //=> 3

割と便利なので使ってみてはいかがでしょうか。

Commentsこの記事についたコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です