文字列中の文字を先頭から検索するには .IndexOf()、.IndexOfAny()を使用します。
1種類の文字を検索するには、.IndexOf()を、
複数のいずれかの文字を検索するには、.IndexOfAny() を使用します。
構文
.IndexOf構文
int <位置> = <対象文字列>.IndexOf(<文字列> [,<開始位置> [, <文字数>]])
.IndexOfAny構文
int <位置> = <対象文字列>.IndexOfAny(<Char配列> [,<開始位置> [, <文字数>]])
IndexOfAnyの場合はChar配列で複数文字を指定します。(string配列はNGです)
サンプル
例1)文字列から文字を検索する(.IndexOf)
//対象文字列
string str = "札幌東京名古屋大阪福岡";
//「東京」の位置を検索する
int result1 = str.IndexOf("東京");
//「仙台」の位置を検索する
int result2 = str.IndexOf("仙台");
//「東京」の位置を5文字目~7文字の間で検索する
int result3 = str.IndexOf("東京", 4, 7);
結果
result1 → 2
result2 → -1
result3 → -1
例2)文字列から文字を検索する(.IndexOfAny)
//対象文字列
string str = "札幌東京名古屋大阪福岡";
//「札」または「福」の位置を検索する
char[] arr1 = {'札', '福'};
int result1 = str.IndexOfAny(arr1);
//「札」または「福」の位置を5文字目~末尾の間で検索する
char[] arr2 = {'札', '福'};
int result2 = str.IndexOfAny(arr2, 4);
//「仙」または「広」の位置を検索する
char[] arr3 = {'仙', '広'};
int result3 = str.IndexOfAny(arr3);
結果
result1 → 0
result2 → 9
result3 → -1
備考
- 戻り値の値は、1文字目を0から数えたインデックス値です。
- 指定した文字が見つからない場合は -1が返ります。