1. IndexOfAnyメソッドとは?
IndexOfAnyメソッドは、C#のString型に提供されるメソッドの一つで、文字列内で特定の文字集合のどれかが最初に現れる位置を探すために使用されます。
このメソッドは大文字と小文字を区別し、指定された文字が見つからない場合は-1を返します。そして、0から始まるインデックスを返すことに注意してください。
これから、具体的な使用方法を説明していきます。


KindleUnlimited会員であれば、全ての本をご覧頂けます。 Linqを理解すれば、C#プログラミングの世界が変わる 第1版
-188x300.jpg)
2. 基本的なIndexOfAnyメソッドの使用方法
まずは、IndexOfAnyメソッドの基本的な使用方法を見てみましょう。次のコード例では、"Hello, World!"という文字列の中で、'l'、'o'、'd'のどれかが最初に現れる位置を探しています。
この場合、'l'が最初に現れるので、その位置(インデックス)が結果として得られます。

ソースコード例1
1 2 3 4 5 6 7 8 9 10 11 12 |
using System; public class Program { public static void Main() { string s = "Hello, World!"; char[] chars = { 'l', 'o', 'd' }; int index = s.IndexOfAny(chars); Console.WriteLine(index); } } |
出力結果
2

3. IndexOfAnyメソッドのオーバーロード
IndexOfAnyメソッドには、オーバーロードがあります。これを利用することで、特定の位置から文字を探すことができます。
以下のコード例では、6番目の文字(インデックス5)から始まる部分文字列内で、'l'、'o'、'd'のどれかが最初に現れる位置を探します。

ソースコード例2
1 2 3 4 5 6 7 8 9 10 11 12 |
using System; public class Program { public static void Main() { string s = "Hello, World!"; char[] chars = { 'l', 'o', 'd' }; int index = s.IndexOfAny(chars, 5); Console.WriteLine(index); } } |
出力結果
7

4. IndexOfAnyメソッドの応用例
IndexOfAnyメソッドは、複数の文字列を検索するために、非常に便利なツールです。
例えば、以下のコード例では、特定の禁止文字が文字列内に存在するかどうかを検証します。このような使い方は、ユーザーからの入力の検証など、多くの場面で役立ちます。

ソースコード例3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using System; public class Program { public static void Main() { string s = "Hello, World!"; char[] forbiddenChars = { '!', '?' }; int index = s.IndexOfAny(forbiddenChars); if (index != -1) { Console.WriteLine("Forbidden character found at index " + index); } else { Console.WriteLine("No forbidden characters found."); } } } |
出力結果
Forbidden character found at index 12

5. IndexOfAnyメソッドの注意点
IndexOfAnyメソッドを使用する際には、いくつか注意すべき点があります。
1つ目は、IndexOfAnyメソッドが大文字と小文字を区別することです。つまり、'A'と'a'は異なる文字として扱われ、'A'を探すときには'a'はマッチしません。
2つ目は、IndexOfAnyメソッドが指定された文字集合のどれかが見つかるとすぐに検索を停止することです。つまり、すべてのマッチする文字を見つけるわけではないということです。
3つ目は、IndexOfAnyメソッドが0から始まるインデックスを返すことです。つまり、最初の文字のインデックスは0で、2番目の文字のインデックスは1となります。

他のIndex系のメソッド
IndexOfAnyメソッドに関連するメソッドは下記の2つがあります。
- IndexOfメソッドの使い方 指定した文字列の位置を返してくれます。大文字小文字を気にせずに検索する方法なども解説
- LastIndexOf メソッドの使い方 特定の文字や部分文字列が最後に現れる位置を探すメソッドを解説
まとめ
本記事では、C#のString型のIndexOfAnyメソッドの使い方について詳しく解説しました。
IndexOfAnyメソッドは、文字列内で特定の文字集合のどれかが最初に現れる位置を探すために使用されます。大文字と小文字を区別し、指定された文字が見つからない場合は-1を返します。
このメソッドは、文字の位置を特定するための非常に強力なツールで、C#プログラミングにおいて頻繁に利用されます。
記事の中で示したコード例を活用して、自分のコードに適用してみてください。

最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!