.NETエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnet.NETナビ
  2. .NETコラム
  3. プログラミング言語
  4. C#
  5. C#のContainsメソッドの使い方|IndexOfの使い方も解説

C#のContainsメソッドの使い方|IndexOfの使い方も解説

  • C#
  • プログラミング言語
公開日時:   更新日時:
C#のContainsメソッドの使い方|IndexOfの使い方も解説
この記事でわかること
    基本情報技術者試験の試験対策はこちら>>
    プログラマー
    C#の文字列検索の方法ってどんなものがあるんですか?
    プロジェクト
    リーダー
    いくつかパターンがあるので、コードを見ながら紹介していきますね。

    C#の文字列検索とは


    文字列操作において、特定の文字列を検索したい場面はよくあります。検索方法にもいくつか種類があり、C#をはじめとして各種言語においても、汎用メソッドが用意されているほどです。データ処理の基本となるので、確実に覚えておきたい内容の一つでしょう。

    C#のContainsメソッドの使い方5つ

    文字列や配列、コレクションに指定文字列が含まれるかを調べるために、C#ではContainsメソッドを使用します。
    ここでは以下の5つの使い方をC#で示しています。
    ・文字列に指定文字列が含まれるかどうかを調べます。
    ・文字列からなるListに指定文字列が含まれるかどうかを調べます。
    ・文字列からなるListに複数の指定文字列が含まれるかどうかを調べます。
    ・Linqを使用して文字列からなる配列に指定文字列が含まれるかどうかを調べます。
    ・IEqualityComparerを実装して比較規則を実装した例を確認します。

    1:文字列内に指定の文字・または文字列が含まれるか確かめる方法

    C#のContainsメソッドは、指定した文字列が対象の文字列に含まれているかを確認するためのものです。IndexOfメソッドと違い、指定した位置を返すものではないですが、指定した文字列の存在を確認したいだけならこれで十分でしょう。このメソッドはString型とList型で利用できますが、配列型には使用できませんので注意が必要です。(LinqのContainsメソッドを使って行うことは可能)

    実行結果

    このコードでは、指定した文字列内に検索対象の文字列が含まれているかを返します。

    2:Listに指定した要素が含まれるか確かめる方法

    Listのコレクションには標準でContainsメソッドが存在します。以下にC#で文字列のListに指定文字列が含まれるかを確かめる例を示します。

    実行結果

    3:複数のキーワードが含まれるか確かめる方法

    ListのContainsメソッドでは一つのキーワードのみが指定できます。ContainsメソッドをANDやORで連結することにより、複数のキーワードが含まれるかの確認ができます。

    ANDを使う場合

    ListのContainsメソッドでは一つのキーワードのみが指定できます。ANDで連結することにより、複数のキーワードが含まれるかの確認ができます。以下にC#による例を示します。

    実行結果

    ORを使う場合

    ListのContainsメソッドでは一つのキーワードのみが指定できます。ORで連結することにより、複数のキーワードが含まれるかの確認ができます。以下にC#による例を示します。

    実行結果

    4:LINQやIEqualityComparerを使用する場合の使い方

    配列は標準ではContainsメソッドが存在しませんが、Linqを使用することにより拡張メソッドとして使用することができます。

    IEqualityComparerインターフェースとはコレクションに対してカスタマイズした等価比較を実装するときに使用します。

    大文字・小文字を考慮しない文字列の比較や作成したクラスの配列の比較などのクラスをC#で実装し、Containsメソッドの比較規則として使用できます。

    1:配列に指定した要素が含まれるか確かめる方法

    配列は標準ではContainsメソッドは使用できませんが、Linqを使用することにより拡張メソッドとして使用できます。
    以下にC#で配列に対してContainsを使用した例を示します。

    実行結果

    2:配列に指定した要素が含まれるかをIEqualityComparerを使用して確かめる方法

    IEqualityComparerインターフェースを実装したクラスを作成することにより、Containsメソッドが拡張できます。
    以下に文字列を小文字に変換した後に比較するクラスをC#で実装した例を示します。

    実行結果

    以下にPersonクラスの配列に指定したPersonが含まれるかを確認するクラスをC#で実装した例を示します。

    class Person { public int Id; public string Name; public override string ToString() { return string.Format(“Id:{0}, Name:{1}”, Id, Name); } } ///

    class PersonComparer : IEqualityComparer<Person> { public bool Equals(Person x, Person y) { if (x.Id == y.Id && x.Name == y.Name) { return true; } return false; } public int GetHashCode(Person obj) { return obj.Id; } } }

    実行結果

    C#で正規表現にマッチする文字列が含まれているか検索するには?

    C#で文字列が含まれているかを検索するにはRegexクラスで正規表現を使用して行うことが可能です。正規表現を使用することにより、検索対象の文字列を柔軟に指定することが可能となります。

    正規表現を使いこなして汎用性の高い検索ができる

    文字列検索を行う上では、正規表現を使いこなすことが重要になります。より汎用性の高い検索をする場合には、指定した文字列の完全一致、部分一致だけでは不十分なケースも出てくるほか、煩雑な処理になってしまうこともあるでしょう。正規表現はそれを解消できる手段になるので、検索条件が複雑になってしまう場合には、積極的に取り入れていくのがおすすめです。

    Regexクラスの使い方

    Regexクラスで正規表現を使用して指定文字列が含まれているかを検索する例をC#で示します。

    実行結果

    IndexOfメソッドの使い方

    IndexOfメソッドは、対象となる文字列内に指定した文字列が何番目にあるのかを返します。該当する文字列が複数ある場合には、最初に該当する文字列のものが対象です。引数が検索対象文字列一つの場合は、先頭から最初に見つかった文字の位置を返す仕様で、省略可能な第二引数をint型nで指定すると、n番目に見つかった文字の位置を返します。また、このメソッドは、String型のほか、List型、配列型にも使用可能です。

    文字列内に含まれている該当文字列位置を検索1

    実行結果

    このコードでは、対象文字列が検索対象文字列のどの位置にあるかを番号で返します。
    (配列などと同じく、開始番号は0からで見つからない場合は-1が返ります。)

    文字列内に含まれている該当文字列位置を検索2

    実行結果

    このコードでは、検索対象文字列が複数含まれている場合に、その対象文字が3番目にあたる部分がどの位置にあるかを返しています。

    プログラマー
    汎用メソッドを使って簡単に検索できるんですね。
    プロジェクト
    リーダー
    複雑な検索条件の場合には正規表現も使えるので、いろいろ試してみると良いですよ。

    C#のContainsの使い方を覚えよう

    ここまでC#でContainsメソッドを使用する例を取り上げてきました。実務でプログラムを作成するときには、文字列や配列、コレクションに対して特定の文字列の検索という処理が現れることが多くなります。

    ぜひ実際に動かしてみてください。

    FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
    株式会社オープンアップシステムロゴ

    株式会社オープンアップシステムはこんな会社です

    秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

    • 充実した研修制度

      充実した研修制度

      毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

    • 資格取得を応援

      資格取得を応援

      スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    株式会社オープンアップシステムに興味を持った方へ

    株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

    株式会社オープンアップシステムへのご応募はこちら↓
    株式会社オープンアップシステムへのご応募はこちら↓

    C#新着案件New Job