문자열 배열을 오름차순, 내림차순으로 정렬하는 방법을 소개합니다.
정렬 과정에서, 알파벳의 경우 대소문자 구분 없이(Case insensitive) 정렬하거나, 대소문자를 구분하여(Case sensitive) 정렬하는 방법을 소개합니다.
1. Array.Sort()를 이용한 방법 (오름차순)
Array.Sort(arr)는 배열 arr을 정렬합니다.
- 원본 배열의 순서가 변경
- 대소문자를 구분하지 않고 정렬
- 오름차순으로 정렬
아래와 같이 문자열 배열을 정렬할 수 있습니다.
using System;
namespace Example {
public class Program {
public static void Main(string[] args) {
string[] arr = { "Melon", "kiwi", "apple", "peach" };
Array.Sort(arr);
Console.WriteLine(String.Join(", ", arr));
}
}
}Output:
apple, kiwi, Melon, peach1.1 대소문자 구분하여 정렬 (Case sensitive)
알파벳을 정렬할 때, 대문자가 소문자보다 순서가 앞에 있습니다.
Array.Sort() 함수에 두번째 인자로 StringComparer.Ordinal를 전달하면 대소문자를 구분하여 정렬합니다.
아래 예제에서는 Melon만 첫 문자가 대문자이기 때문에, 가장 앞에 정렬됩니다.
using System;
namespace Example {
public class Program {
public static void Main(string[] args) {
string[] arr = { "Melon", "kiwi", "apple", "peach" };
Array.Sort(arr, StringComparer.Ordinal);
Console.WriteLine(String.Join(", ", arr));
}
}
}Output:
Melon, apple, kiwi, peach2. Array.Sort()를 이용한 방법 (내림차순)
Array.Sort()는 오름차순으로 정렬하며, Array.Reverse()으로 순서를 역순으로 변경하면 내림차순으로 정렬된 것과 같습니다.
using System;
namespace Example {
public class Program {
public static void Main(string[] args) {
string[] arr = { "melon", "kiwi", "apple", "peach" };
Array.Sort(arr);
Array.Reverse(arr);
Console.WriteLine(String.Join(", ", arr));
}
}
}Output:
peach, melon, kiwi, apple2.1 Comparison을 이용한 방법
Array.Sort()에 Comparison을 인자로 전달할 수 있는데, Comparison은 어떻게 정렬할 것인지에 대한 내용입니다.
아래와 같이 Comparison으로 (s1, s2) => s2.CompareTo(s1)를 전달하면, 비교 순서를 변경하여 내림차순으로 정렬하게 됩니다.
using System;
namespace Example {
public class Program {
public static void Main(string[] args) {
string[] arr = { "melon", "kiwi", "apple", "peach" };
Array.Sort(arr,
new Comparison<string>((s1, s2) => s2.CompareTo(s1)));
Console.WriteLine(String.Join(", ", arr));
}
}
}Output:
peach, melon, kiwi, apple3. array.OrderBy()를 이용한 방법 (오름차순)
array.OrderBy()는 인자로 전달된 배열을 정렬하여 Enumerable로 리턴합니다.
- 원본 배열은 변경되지 않고, 정렬된 내용을 Enumerable로 리턴
- 대소문자를 구분하지 않고 정렬
- 오름차순으로 정렬
- 어떤 key를 사용하여 정렬할 것인지 함수 인자로 전달
아래와 같이 OrderBy()로 정렬된 내용이 Enumerable로 리턴되며, ToArray()로 배열로 변환할 수 있습니다.
using System;
namespace Example {
public class Program {
public static void Main(string[] args) {
string[] arr = { "Melon", "kiwi", "apple", "peach" };
string[] sorted = arr.OrderBy(s => s).ToArray();
Console.WriteLine(String.Join(", ", sorted));
}
}
}Output:
apple, kiwi, Melon, peach3.1 대소문자 구분하여 정렬 (Case sensitive)
OrderBy()는 기본적으로 대소문자를 구분하지 않고 정렬합니다.
만약 대소문자 구분하여 정렬하고 싶을 때는 OrderBy()의 두번째 인자로 StringComparer.Ordinal를 전달하면 됩니다.
using System;
namespace Example {
public class Program {
public static void Main(string[] args) {
string[] arr = { "Melon", "kiwi", "apple", "peach" };
string[] sorted = arr.OrderBy(s => s, StringComparer.Ordinal).ToArray();
Console.WriteLine(String.Join(", ", sorted));
}
}
}Output:
Melon, apple, kiwi, peach4. array.OrderBy()를 이용한 방법 (내림차순)
OrderBy()는 배열의 요소들을 오름차순으로 정렬하고, OrderByDescending()는 내림차순으로 정렬합니다.
using System;
namespace Example {
public class Program {
public static void Main(string[] args) {
string[] arr = { "Melon", "kiwi", "apple", "peach" };
string[] sorted = arr.OrderByDescending(s => s).ToArray();
Console.WriteLine(String.Join(", ", sorted));
}
}
}Output:
peach, Melon, kiwi, appleRelated Posts
- C# 바이트(Byte) 배열을 문자열로 변환
- C# String.format() 함수 알아보기
- C# - foreach (Array, List, Dictionary)
- C# 프로퍼티(Property) Get/Set 함수
- C# - Dictionary에서 key, value 가져오기
- C# - Dictionary 순회, foreach, for 루프
- C# - Dictionary에서 key, value 삭제
- C# - Dictionary.add()로 데이터 추가
- C# - Dictionary 선언 및 초기화
- C# - 문자열을 Double, Float으로 변환
- C# - 문자열을 리스트로 변환
- C# - 두 날짜/시간 비교, DateTime.Compare()
- C# - 날짜 문자열을 DateTime으로 변환
- C# - Sleep, 몇 초간 지연시키기
- C# - 날짜 계산, DateTime 시간 더하기 빼기
- C# - Timestamp(millisecond)를 DateTime 객체로 변환
- C# - 현재 시간 가져오기, DateTime
- C# - 문자열 리스트를 문자열로 변환
- C# - 리스트 복사 (얕은 복사, 깊은 복사)
- C# - 2차원 리스트 선언 및 초기화
- C# - 리스트 선언 및 초기화
- C# - 리스트 길이, 크기 가져오기
- C# - 리스트 합계, 평균 계산
- C# - 리스트 요소 제거 (RemoveAt, RemoveAt, RemoveAll)
- C# - 리스트에서 빈 문자열, null 제거
- C# - 리스트 두개로 분리, n개로 나누기
- C# - 문자열 뒤집기, Reverse()
- C# - 2차원 배열 복사, Clone
- C# - 문자열 배열을 문자열로 변환
- C# - 2차원 배열 선언, 초기화 방법
- C# - 배열 길이, 2차원 배열 길이
- C# - 두개의 배열을 하나로 합치기
- C# - 배열 중복 요소 제거
- C# - 배열에서 특정 요소 제거
- C# - Int 배열 정렬 (오름차순, 내림차순)