どうも、ちょげ(@chogetarou)です。
文字列の配列(Array)を長さでソートする方法を紹介します。
昇順

文字列の配列(Array)を長さで昇順にソートする方法は、2つあります。
Array.Sort()
1つは、Array.Sort()を使う方法です。
まず、Array.Sort()を呼び出します。
Array.Sort()の第1引数に配列、第2引数に2つの引数を持つラムダ式を指定します。
そして、ラムダ式で第1引数のLengthにアクセスし、LengthからCompareTo()を呼び出します。
CompareTo()の引数に、ラムダ式の第2引数のLengthを指定します。
Array.Sort(array, (x, y) => x.Length.CompareTo(y.Length));
上記のArray.Sort()は、文字列の配列を長さで昇順にソートします。
使用例
using System;
using System.Linq;
public class Example
{
public static void Main()
{
string[] myArray = new string[5] { "b", "accaa", "cd", "daca", "lea"};
Array.Sort(myArray, (x, y) => x.Length.CompareTo(y.Length));
foreach (var i in myArray)
{
Console.WriteLine(i);
}
}
}

System.LinqのOrderBy
もう1つは、System.LinqのOrderBy()を使う方法です。
まず、System.Linqを導入します。
using System.Linq;
次に、文字列の配列からOrderBy()を呼び出します。
OrderBy()の引数に、引数のLengthプロパティを返すラムダ式を指定します。
そして、OrderBy()からToArray()を呼び出します。
result = array.OrderBy(x => x.Length).ToArray();
上記の「array.OrderBy(x => x.Length).ToArray()」は、OrderBy()を呼び出した文字列の配列を、長さで昇順にソートした新しい配列を生成します。
使用例
using System;
using System.Linq;
public class Example
{
public static void Main()
{
string[] myArray = new string[5] { "b", "accaa", "cd", "daca", "lea"};
myArray = myArray.OrderBy(x => x.Length).ToArray();
foreach (var i in myArray)
{
Console.WriteLine(i);
}
}
}
降順
文字列の配列(Array)を長さで降順にソートする方法は、2つあります。
Array.Sort()
1つは、Array.Sort()を使う方法です。
まず、Array.Sort()を呼び出します。
Array.Sort()の第1引数に配列、第2引数に2つの引数を持つラムダ式を指定します。
そして、ラムダ式で第2引数のLengthにアクセスし、LengthからCompareTo()を呼び出します。
CompareTo()の引数に、ラムダ式の第1引数のLengthを指定します。
Array.Sort(array, (x, y) => y.Length.CompareTo(x.Length));
上記のArray.Sort()は、文字列の配列を長さで降順にソートします。
使用例
using System;
public class Example
{
public static void Main()
{
string[] myArray = new string[5] { "b", "accaa", "cd", "daca", "lea"};
Array.Sort(myArray, (x, y) => y.Length.CompareTo(x.Length));
foreach (var i in myArray)
{
Console.WriteLine(i);
}
}
}

System.LinqのOrderByDescending
もう1つは、System.LinqのOrderByDescending()を使う方法です。
まず、System.Linqを導入します。
using System.Linq;
次に、文字列の配列からOrderByDescending()を呼び出します。
OrderByDescending()の引数に、引数のLengthプロパティを返すラムダ式を指定します。
そして、OrderByDescending()からToArray()を呼び出します。
result = array.OrderByDescending(x => x.Length).ToArray();
上記の「array.OrderByDescending(x => x.Length).ToArray()」は、OrderByDescending()を呼び出した文字列の配列を、長さで降順にソートした新しい配列を生成します。
使用例
using System;
using System.Linq;
public class Example
{
public static void Main()
{
string[] myArray = new string[5] { "b", "accaa", "cd", "daca", "lea"};
myArray = myArray.OrderByDescending(x => x.Length).ToArray();
foreach (var i in myArray)
{
Console.WriteLine(i);
}
}
}
まとめ
文字列の配列(Array)を長さで昇順にソートする方法は、次の2つです。
- Arary.Sort()を使う方法
- System.LinqのOrderBy()を使う方法
文字列の配列(Array)を長さで降順にソートする方法は、次の2つです。
- Arary.Sort()を使う方法
- System.LinqのOrderByDescending()を使う方法
コメント