文字列の検索
先頭から検索する
文字列中の文字を先頭から検索するには、StringクラスのIndexOfメソッドを使用します。
文字列.IndexOf(“検索対象文字”)
それではサンプルを見てみましょう。
Console.WriteLineを使って、IndexOfの動作をコンソールに出力します。
1 2 3 |
string a = "ある文字列中の文字検索"; Console.WriteLine(a.IndexOf("文字")); |
上記を実行した結果がこちらです。
2
実行結果がコンソールに出力されました。
“文字”を先頭から検索して最初に見つかった位置である、2が表示されています。
該当の文字は3文字目ですが、これは1文字目を0としているためです。
それでは、文字が見つからなかった場合と、引数に空文字(””)を指定した場合を見てみましょう。
1 2 3 4 5 6 |
string a = "ある文字列中の文字検索"; // 検索文字列が見つからない場合 Console.WriteLine(a.IndexOf("い")); // 空文字の場合 Console.WriteLine(a.IndexOf("")); |
上記を実行した結果がこちらです。
-1
0
文字が見つからなかった場合は-1、空文字を引数とした場合は0が表示されているのがわかります。
末尾から検索する
文字列中の文字を末尾から検索するには、StringクラスのLastIndexOfメソッドを使用します。
文字列.LastIndexOf(“検索対象文字”)
それではサンプルを見てみましょう。
Console.WriteLineを使って、LastIndexOfの動作をコンソールに出力します。
1 2 3 |
string a = "ある文字列中の文字検索"; Console.WriteLine(a.LastIndexOf("文字")); |
上記を実行した結果がこちらです。
7
実行結果がコンソールに出力されました。
“文字”を末尾から検索して最初に見つかった位置である、7が表示されています。
IndexOf同様、文字が見つからなかった場合と引数に空文字列(””)を指定した場合を見てみましょう。
1 2 3 4 5 6 |
string a = "ある文字列中の文字検索"; // 検索文字列が見つからない場合 Console.WriteLine(a.LastIndexOf("い")); // 空文字の場合 Console.WriteLine(a.LastIndexOf("")); |
上記を実行した結果がこちらです。
-1
10
文字が見つからなかった場合は-1、空文字を引数とした場合は10が表示されているのがわかります。
10というのは、文字列長 – 1の値です。
IndexOfメソッド、LastIndexOfメソッドともに、注意すべき点は検索対象の文字が1文字目に存在した場合(LastIndexOfの場合は最後尾)と、空文字を引数に指定した場合に取得する値が同じである点です。
極力、空文字を引数に指定しないようにしましょう。
以上が、文字列中の文字を検索するメソッド「IndexOf, LastIndexOf」の使い方です。
ぜひ参考にしてみてください。