データ操作

[C#] 文字列中の文字を先頭から検索する(.IndexOf、.IndexOfAny)

文字列中の文字を先頭から検索するには .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が返ります。

関連記事

-データ操作
-