スライドショー

【C#入門】Containsで値が含まれるか調べる方法(文字列/配列/List)

こんにちは!フリーランスの長野です。

Containsって使っていますか?C#ではContainsを使って文字列や配列、Listから指定した対象が含まれるか確認することができます。

この記事では、Containsについて

  • Containsメソッドとは
  • 文字列内に指定の文字列があるか確認
  • Listの要素にあるか確認
  • 配列の要素にあるか確認
  • という基本的な内容から、

  • 複数のキーワードがあるか確認
  • 正規表現を使う方法
  • など応用的な内容についても解説していきます。今回はContainsについて、使い方をわかりやすく解説します!

    Containsメソッドとは

    Containsメソッドは文字列内に指定の文字、文字列が含まれるか確認することができます。また、Listや配列に指定の要素が含まれているかを確認することもできます。

    StringクラスやListクラスなどでContainsメソッドが用意されています。ただし、ArrayクラスにはContainsメソッドはありません。LINQのEnumerable.Containsメソッドを使って代用することができます。

    それぞれのクラスのContainsメソッドの使い方について解説していきます!

    文字列内に指定の文字列があるか確認

    まずは文字列内に指定の文字、もしくは文字列が含まれるか確認する方法についてみていきましょう。

    Containsメソッドは以下のように定義されています。

    public bool Contains(
        string value
    )

    引数valueでは、存在するか確認する文字もしくは文字列を指定します。指定した文字列が含まれる場合はtrue、それ以外はfalseを返します。

    サンプルコードで確認しましょう。

    using System;
    
    namespace Sample
    {
      class Sample
      {
        static void Main()
        {
          string str = "Hello World!";
          string target = "W";
          
          if(str.Contains(target)) {
            Console.WriteLine("{0}が見つかりました", target);  
          } else {
            Console.WriteLine("{0}は見つかりませんでした", target);
          }
          
          Console.ReadKey();
        }
      }
    }

    実行結果:

    Wが見つかりました

    このサンプルコードでは、Containsメソッドを使って"W"が含まれるか確認しています。

    Listの要素にあるか確認

    Listに指定の要素が含まれるか確認する方法についてもみていきましょう。

    Containsメソッドは以下のように定義されています。

    public bool Contains(
        T item
    )

    引数itemには、存在するか確認する要素を指定します。

    サンプルコードで確認しましょう。

    using System;
    using System.Collections.Generic;
    
    namespace Sample
    {
      class Sample
      {
        static void Main()
        {
          string[] src = {"Tokyo", "Osaka", "Nagoya"};
          var list = new List<string>();
          list.AddRange(src);
          string item = "Osaka";
          
          if(list.Contains(item)) {
            Console.WriteLine("{0}が見つかりました", item);  
          } else {
            Console.WriteLine("{0}は見つかりませんでした", item);
          }
          
          Console.ReadKey();
        }
      }
    }

    実行結果:

    Osakaが見つかりました

    配列の要素にあるか確認

    配列に指定の要素が含まれるか確認する方法についてもみていきましょう。

    ArrayクラスにはContainsメソッドがありません。代わりとしてLINQのEnumerable.Containsメソッドを使う方法をご紹介します。

    using System;
    using System.Linq;
    
    namespace Sample
    {
      class Sample
      {
        static void Main()
        {
          string[] src = {"Tokyo", "Osaka", "Nagoya"};
          string item = "Osaka";
          
          if(src.Contains("Osaka")) {
            Console.WriteLine("{0}が見つかりました", item);  
          } else {
            Console.WriteLine("{0}は見つかりませんでした", item);
          }
          
          Console.ReadKey();
        }
      }
    }

    実行結果:

    Osakaが見つかりました

    複数のキーワードがあるか確認

    複数のキーワードが含まれるか確認するには論理演算子AND、ORを使用します。

    ANDの場合

    キーワードを全て含むか確認する場合はAND演算子を使います。

    using System;
    
    namespace Sample
    {
      class Sample
      {
        static void Main()
        {
          string str = "Hello World!";
          string val1 = "d";
          string val2 = "e";
          
          if(str.Contains(val1) && str.Contains(val2)) {
            Console.WriteLine("{0}、{1}どちらも見つかりました", val1, val2);  
          } else {
            Console.WriteLine("{0}、{1}のどちらかが見つかりませんでした", val1, val2);
          }
          
          Console.ReadKey();
        }
      }
    }

    実行結果:

    d、eどちらも見つかりました

    ORの場合

    キーワードの中のどれかを含むか確認する場合はOR演算子を使います。

    using System;
    
    namespace Sample
    {
      class Sample
      {
        static void Main()
        {
          string str = "Hello World!";
          string val1 = "d";
          string val2 = "e";
          
          if(str.Contains(val1) || str.Contains(val2)) {
            Console.WriteLine("{0}、{1}のどちらかが見つかりました", val1, val2);  
          } else {
            Console.WriteLine("{0}、{1}どちらも見つかりませんでした", val1, val2);
          }
          
          Console.ReadKey();
        }
      }
    }

    実行結果:

    d、eのどちらかが見つかりました

    正規表現を使う方法

    文字列に正規表現にマッチする文字列が含まれているか検索したい場合があります。

    正規表現とはいくつかの文字列を一つの形式でまとめて表現するための表現方法のことです。主な正規表現については下記のとおりになります。

    記号記号の説明例の説明
    .任意の1文字。改行文字は除く。.+任意の文字列
    *直前の1文字の0回以上の繰り返しと一致hoge*hogeもしくはhogee...と一致
    ^行の先頭^[0-9]行頭が数字
    $行の末尾^.{10}$10文字の行
    [ ]カッコ内の任意の1文字と一致。「-」で範囲指定可。[a-z]小文字のアルファベット1文字と一致
    [^ ]カッコ内の任意の1文字と不一致。「-」で範囲指定可。[^A-Z]大文字のアルファベット以外
    +直前の文字の1個以上の繰り返しと一致hoge+hogee...と一致
    ?直前の文字の0または1文字と一致hoge?eと一致
    { }カッコ内の数値の繰り返しと一致{n}直前の文字のn個の繰り返しと一致
    {,n}直前の文字のn個以下の繰り返しと一致
    {m,}直前の文字のm個以上の繰り返しと一致
    {m,n}直前の文字のm個以上、n個以下の繰り返しと一致
    |直前、直後どちらかのパターンに一致hoge|piyohogeまたはpiyo
    ( )カッコ内をグループ化。マッチした内容は参照可。

    C#で正規表現にマッチする文字列が含まれているか検索するには、System.Text.RegularExpressions.Regexクラスを使います。

    用意されているメソッドには、指定した正規表現が含まれているか確認するためのIsMatchメソッドや検索するためのMatchesメソッドなどがあります。

    Regexクラスの簡単な使い方について、サンプルコードでご紹介します。

    using System;
    using System.Text.RegularExpressions;
    
    namespace Sample
    {
      class Sample
      {
        static void Main()
        {
          string str = "侍エンジニア塾";
          string target = "[エンジニア]";
          
          if(Regex.IsMatch(str, target)) {
            Console.WriteLine("{0}にマッチします", target);
          } else {
            Console.WriteLine("{0}にマッチしません", target);
          }
          
          Console.ReadKey();
        }
      }
    }

    実行結果:

    [エンジニア]にマッチします

    このサンプルコードでは、RegularExpressionsクラスを使って正規表現にマッチするか確認しています。

    正規表現パターンには”エ”、”ン”、”ジ”、”ニ”、”ア”のいずれかの文字を指定しています。IsMachメソッドで指定した正規表現パターンが含まれるか確認を行っています。

    まとめ

    ここでは、Containsメソッドについて説明しました。Containsメソッドは文字列内に指定の文字、文字列が含まれるか確認することができます。

    また、Listや配列に指定の要素が確認することもできます。ただし、配列の要素で確認する場合はLINQのEnumerable.Containsを使うなどの工夫が必要です!

    使いこなすことができるように、この記事を何度も参考にして下さいね!

    LINEで送る
    Pocket

    無料でSEからWebエンジニアへ転職しませんか?



    侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

    • システムエンジニアという職業だけどコードが書けない
    • 事務作業が多くスキルがないため将来が不安
    • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
    という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

    弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

    既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

    まずは無料体験レッスンを予約する

    書いた人

    長野 透

    長野 透

    熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
    お問合せはこちらでも受け付けています。
    [email protected]

    おすすめコンテンツ

    あなたにぴったりなプログラミング学習プランを無料で診断!

    プログラミング学習の効率を劇的に上げる学習メソッドを解説