C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#で配列内に指定した条件に一致する要素が含まれているか確認する方法

C#で配列の中に、特定の条件に一致する要素が1つでも存在するかどうかを確認したい場合があります。そんなときに便利なのが Array.Exists() メソッドです。このメソッドは、第1引数に検索対象の配列、第2引数に条件を表す述語(Predicate)デリゲートを渡します。たとえば文字列の前方一致を調べたい場合は、StartsWith() メソッドと組み合わせることで簡単に実現できます。

以下では、具体的なサンプルコードとその実行結果を通じて、使い方を詳しく見ていきましょう。

サンプルコード:StartsWith()で前方一致を判定する

using System;
public class Demo {
   public static void Main(){
      string[] products = { "Electronics", "Accessories", "Clothing", "Toys", "Clothing", "Furniture" };
      Console.WriteLine("商品リスト...");
      foreach(string s in products){
         Console.WriteLine(s);
      }
      Console.WriteLine("\n「C」で始まる商品は1つ以上あるか? = {0}",
      Array.Exists(products, ele => ele.StartsWith("C")));
      Console.WriteLine("「D」で始まる商品は1つ以上あるか? = {0}",
      Array.Exists(products, ele => ele.StartsWith("D")));
      Console.WriteLine("「T」で始まる商品は1つ以上あるか? = {0}",
      Array.Exists(products, ele => ele.StartsWith("T")));
      Console.WriteLine("「E」で始まる商品は1つ以上あるか? = {0}",
      Array.Exists(products, ele => ele.StartsWith("E")));
   }
}

実行結果

上記のコードを実行すると、次のような出力が得られます。

商品リスト...
Electronics
Accessories
Clothing
Toys
Clothing
Furniture
「C」で始まる商品は1つ以上あるか? = True
「D」で始まる商品は1つ以上あるか? = False
「T」で始まる商品は1つ以上あるか? = True
「E」で始まる商品は1つ以上あるか? = True

ポイント解説

  • Array.Exists() は、配列内の要素を先頭から順に走査し、条件に一致する要素が1つでも見つかった時点で true を返します。
  • ラムダ式 ele => ele.StartsWith("C") の部分が各要素に対して評価される条件です。
  • どの要素も条件を満たさない場合は false が返されます(上記の「D」の例)。

サンプルコード:完全一致の判定も追加した例

次に、特定の値と完全一致する要素が存在するかどうかの判定を追加した例を見てみましょう。

using System;
public class Demo {
   public static void Main(){
      string[] products = { "Electronics", "Accessories", "Clothing", "Toys", "Clothing", "Furniture" };
      Console.WriteLine("商品リスト...");
      foreach(string s in products){
         Console.WriteLine(s);
      }
      Console.WriteLine("配列に「Accessories」は含まれているか? = {0}",
      Array.Exists(products, ele => ele == "Accessories"));
      Console.WriteLine("配列に「Stationery」は含まれているか? = {0}",
      Array.Exists(products, ele => ele == "Stationery"));
      Console.WriteLine("\n「C」で始まる商品は1つ以上あるか? = {0}",
      Array.Exists(products, ele => ele.StartsWith("C")));
      Console.WriteLine("「D」で始まる商品は1つ以上あるか? = {0}",
      Array.Exists(products, ele => ele.StartsWith("D")));
      Console.WriteLine("「T」で始まる商品は1つ以上あるか? = {0}",
      Array.Exists(products, ele => ele.StartsWith("T")));
      Console.WriteLine("「E」で始まる商品は1つ以上あるか? = {0}",
      Array.Exists(products, ele => ele.StartsWith("E")));
   }
}

実行結果

このコードを実行すると、以下の出力になります。

商品リスト...
Electronics
Accessories
Clothing
Toys
Clothing
Furniture
配列に「Accessories」は含まれているか? = True
配列に「Stationery」は含まれているか? = False
「C」で始まる商品は1つ以上あるか? = True
「D」で始まる商品は1つ以上あるか? = False
「T」で始まる商品は1つ以上あるか? = True
「E」で始まる商品は1つ以上あるか? = True

まとめ

このように、Array.Exists() メソッドを使えば、配列内に条件に一致する要素が存在するかどうかを簡潔に判定できます。条件部分には任意のラムダ式を指定できるため、StartsWith() による前方一致だけでなく、== による完全一致や、より複雑な条件式にも柔軟に対応可能です。配列の要素検索を行う際は、ぜひ活用してみてください。

  1. 【Java入門】配列に指定した値が含まれているかを判定する方法

    この記事では、Javaで配列の中に特定の値が含まれているかどうかを確認する方法を解説します。基本的な考え方は、配列の各要素を順番に走査(イテレート)し、検索したい値と比較するというものです。処理の流れ(アルゴリズム)処理を開始する整数型の変数(my_input、i、array_size)とboolean型の変数(my_check)、そして整数型配列(my_array)を宣言するユーザーから値を入力してもらう、またはあらかじめ値を定義しておくforループで配列の要素を順に取り出し、検索対象の値と比較する一致する要素が見つかれば「含まれている」、見つからなければ「含まれていない」と判定する結果を表

  2. Pythonで配列が指定範囲のすべての要素を含んでいるかどうかを判定する方法

    nums という配列と、2つの整数 x、y があるとします。この2つの数値は範囲 [x, y] を定義しており、配列がこの範囲内のすべての要素を含んでいるかどうかを判定する必要があります。 たとえば、入力が nums = [5,8,9,6,3,2,4]、x = 2、y = 6 の場合、範囲内の要素 [2,3,4,5,6] がすべて配列に存在するため、出力は True になります。 解決のためのアプローチ この問題は、配列の要素の符号を反転させて「訪問済み」のマークとして利用することで、追加のメモリを使わずに効率的に解くことができます。手順は以下の通りです。 temp_range := y -