文字列処理

[C#] IndexOfで特定の文字列を検索する方法

今回は、C#のIndexOfで特定の文字列を検索する方法をご紹介します。

IndexOfとは

IndexOfは、C#の文字列(string型)に用意されているメソッドで、指定した文字列や文字が最初に出現する位置(インデックス)を返す便利な機能です。

見つからない場合は-1が返されるため、結果をチェックすることで文字列内に目的の文字列や文字が含まれているかどうかを判定できます。

IndexOfの基本的な使い方

部分文字列を検索する

まずは、最も基本的な使い方として、文字列の中から特定の部分文字列を検索する例です。

実行結果

「World」はインデックス 6 から見つかりました。

このように、見つかった場合は最初の出現位置が返され、見つからなかった場合は-1が返されます。

オーバーロードと検索範囲指定

IndexOfにはオーバーロードが複数存在し、検索開始位置や検索範囲などを指定することができます。

たとえば、文字列の先頭以外から検索を始めたい場合や、検索範囲を限定したい場合に便利です。

実行結果

最初の “C#” は 0 にあり、次は 26 にあります。

開始位置と文字数を指定して検索を行うことも可能です。

実行結果

指定範囲内で “an” がインデックス 8 に見つかりました。

大文字小文字を区別しない検索

デフォルトでは、大文字小文字は区別して検索されますが、StringComparison.OrdinalIgnoreCaseのような比較オプションを指定すると、大文字小文字を無視した検索が可能です。

実行結果

大文字小文字を無視して “hello” がインデックス 0 に見つかりました。




複数箇所の検索方法

同じ文字列が複数回出現している場合、IndexOfを繰り返し呼び出して、すべての出現位置を確認することができます。

実行結果

“fun” がインデックス 6 に見つかりました。
“fun” がインデックス 26 に見つかりました。

IndexOfを使用する際の注意点

  • -1の判定を必ず行うこと(見つからない場合は-1が返る)
  • 検索開始位置や検索範囲を指定する場合は、範囲外にならないように注意
  • 大文字小文字の区別を行うかどうかを事前に検討する
  • 大量のデータを扱う場合は、パフォーマンス面の考慮が必要

まとめ

C#のIndexOfメソッドは、文字列から特定の部分を検索する際に多用される基本的な機能です。

検索開始位置や検索範囲を指定するオーバーロードもあるため、柔軟な検索が実現できます。

見つからない場合の判定や範囲指定に注意しながら、用途に合わせて活用すると便利です。