문자열 배열을 오름차순, 내림차순으로 정렬하는 방법을 소개합니다.
정렬 과정에서, 알파벳의 경우 대소문자 구분 없이(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, peach
1.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, peach
2. 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, apple
2.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, apple
3. 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, peach
3.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, peach
4. 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, apple
Related 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# - 날짜 문자열을 DateTime으로 변환
- C# - Sleep, 몇 초간 지연시키기
- 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 배열 정렬 (오름차순, 내림차순)