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

C#でラムダ式を使って文字列配列から最長の文字列を検索する方法

はじめに

C#では、LINQのAggregateメソッドとラムダ式を組み合わせることで、文字列配列の中から最も文字数の多い文字列を簡潔に検索できます。本記事では、その具体的な実装方法をサンプルコード付きで解説します。

対象となる文字列配列

まず、次のような文字列配列を用意します。

string[] arr = { "Java", "HTML", "CSS", "JavaScript" };

Aggregateメソッドとラムダ式による検索

Aggregateメソッドを使用し、ラムダ式で「次の要素の文字数が現在の最長文字列より長いかどうか」を順番に判定していきます。

この例では、集計の初期値(シード値)として「jQuery」を設定しています。結果として返される文字列は、このシード値よりも多くの文字を持つ必要があります。さらに、最終的な結果はToLower()によってすべて小文字に変換されて出力されます。

サンプルコード

using System;
using System.Linq;

class Demo {
   static void Main() {
      string[] arr = { "Java", "HTML", "CSS", "JavaScript" };
      string res = arr.AsQueryable().Aggregate("jQuery",
         (longest, next) => next.Length > longest.Length ? next : longest,
         str => str.ToLower());
      Console.WriteLine("String with more number of characters: {0}", res);
   }
}

実行結果

String with more number of characters: javascript

コードの解説

Aggregateメソッドには、以下の3つの引数を渡しています。

  • 第1引数(シード値):集計の開始点となる文字列「jQuery」。
  • 第2引数(集計関数):各要素に対して実行されるラムダ式。next.Length > longest.Length ? next : longestという三項演算子により、より文字数の多い文字列を常に保持します。
  • 第3引数(結果セレクター):最終結果に適用される関数。ここではstr => str.ToLower()で結果を小文字に変換しています。

配列内で最も長い文字列は「JavaScript」(10文字)であるため、これが選択され、小文字に変換された「javascript」が出力されます。このように、Aggregateメソッドを活用すれば、ループ処理を明示的に書かずとも、宣言的で読みやすいコードで最大値の検索が実現できます。

  1. C#でメソッドから配列を返す方法【初心者向けサンプルコード付き】

    C#では、メソッドの戻り値として配列をそのまま返すことができます。本記事では、文字列配列を返すメソッドを作成し、その結果を string.Join() メソッドで結合して表示する具体的な手順を解説します。 メソッドから配列を返す手順 手順1:Joinメソッドの中でメソッドを呼び出す 単語同士を結合するには、string.Join() メソッドの中で自作メソッドを呼び出します。 string.Join( , display()) 手順2:文字列配列を定義する まず、要素数5の文字列配列を宣言します。 string[] str = new string[5]; 手順3:配列に個別の要素を追

  2. 【Python】配列ゲームの勝者を見つけるプログラムの実装方法

    問題の概要 一意な要素のみを含む配列「arr」と、整数値「k」が与えられているとします。ここで、次のようなゲームを考えてみましょう。 各ターンでは、配列の先頭2つの要素 arr[0] と arr[1] を比較します。大きい方の値が勝者となって位置0に残り、負けた小さい方の値は配列の末尾へ移動します。このゲームは、いずれかの値が k回連続 で勝利した時点で終了し、その時点での勝者が答えとなります。私たちの課題は、この配列から勝者を見つけることです。 具体例 例えば、入力が arr = [1,5,6,3,4,2]、k = 3 の場合、出力は 6 になります。その過程は以下の通りです。 第1ラウ