이번 포스팅에서는 C#에서 두 문자열을 비교하는 방법을 소개합니다.
Equals() 함수
Equlas()
함수는 두 개의 문자열 객체가 동일한지 확인하는데 사용됩니다. 불리언 값을 반환하며 두 문자열이 같으면 True를 반환하며 그렇지 않으면 False를 반환합니다.
다음은 Equals()
함수 사용 예제입니다.
class Program
{
static void Main(string[] args)
{
Console.WriteLine("string.Equals(\"ABCDEE\", \"ABCDDE\"): " + string.Equals("ABCDEE", "ABCDDE"));
Console.WriteLine("string.Equals(\"ABC\", \"abc\"): " + string.Equals("ABC", "abc"));
Console.WriteLine("string.Equals(\"ABC\", \"ABC\"): " + string.Equals("ABC", "ABC"));
}
}
실행 결과
Equals()
함수는 대소문자를 구분하며, 다음과 같이 문자열 객체에서 Equlas()
함수를 호출할 수 있습니다.
class Program
{
static void Main(string[] args)
{
Console.WriteLine("\"ABCDEE\".Equals(\"ABCDDE\"): " + "ABCDEE".Equals("ABCDDE"));
Console.WriteLine("\"ABC\".Equals(\"abc\"): " + "ABC".Equals("abc"));
Console.WriteLine("\"ABC\".Equals(\"ABC\"): " + "ABC".Equals("ABC"));
}
}
실행 결과
문자열 객체에서 Equals()
함수를 호출하는 경우 주의사항으로 Equals()
함수를 호출하는 문자열이 null인 경우 NullReferenceException 예외가 발생합니다.
다음은 문자열 객체가 null인데, Equals()
함수를 호출하여 NullReferenceException 예외가 발생하는 경우입니다.
class Program
{
static void Main(string[] args)
{
string strValue = null;
Console.WriteLine("strValue.Equals(\"ABCDDE\"): " + strValue.Equals("ABCDDE"));
}
}
실행 결과
== 연산자
== 연산자는 두 개의 문자열 객체가 동일한지 확인하는데 사용됩니다. 불리언 값을 반환하며 두 문자열이 같으면 True를 반환하며 그렇지 않으면 False를 반환합니다.
그리고 비교하는 문자열에 null이 존재하더라도 예외가 발생하지 않습니다.
class Program
{
static void Main(string[] args)
{
Console.WriteLine("\"ABCDEE\" == \"ABCDDE\": " + ("ABCDEE" == "ABCDDE"));
Console.WriteLine("\"ABC\" == \"abc\": " + ("ABC" == "abc"));
Console.WriteLine("\"ABC\" == \"ABC\": " + ("ABC" == "ABC"));
Console.WriteLine("\"ABC\" == null: " + ("ABC" == null));
}
}
실행 결과
Compare() 함수
Compare()
함수는 두 문자열을 전달하여 ASCII 값 측면에서 값을 비교합니다. Compare()
함수는 int형 값을 반환하며, 반환되는 값은 다음과 같습니다.
- 두 문자열이 동일하면 0을 반환합니다.
- 첫 번째 문자열이 두 번째 문자열보다 크면 1 또는 0보다 큰 값을 반환합니다.
- 첫 번째 문자열이 두 번째 문자열보다 작으면 -1 또는 0보다 작은 값을 반환합니다.
class Program
{
static void Main(string[] args)
{
// 대소문자를 구분합니다.
Console.WriteLine("string.Compare(\"A\", \"a\"): " + string.Compare("A", "a"));
// A는 아스키코드로 65 B는 66입니다. B가 더 큽니다.
Console.WriteLine("string.Compare(\"A\", \"B\"): " + string.Compare("A", "B"));
Console.WriteLine("string.Compare(\"B\", \"A\"): " + string.Compare("B", "A"));
// 동일한 문자열입니다.
Console.WriteLine("string.Compare(\"C\", \"C\"): " + string.Compare("C", "C"));
}
}
실행 결과
다음은 단일 문자열이 아닌 문자열을 비교합니다.
class Program
{
static void Main(string[] args)
{
Console.WriteLine("string.Compare(\"ABB\", \"ABA\"): " + string.Compare("ABB", "ABA"));
}
}
실행 결과
두 문자열은 "AB"까지는 동일하지만, 세 번째 위치의 문자열은 다릅니다. "B"가 "A"보다 크므로 첫 번째 문자열이 두 번째 문자열보다 큽니다.
CompareTo() 함수
CompareTo()
함수는 두 문자열의 정렬 순서로 비교합니다. CompareTo()
함수는 int형 값을 반환하며, 반환되는 값은 다음과 같습니다.
- 두 문자열의 정렬 순서가 동일하면 0을 반환합니다.
- 첫 번째 문자열이 두 번째 문자열보다 빠른 경우 0보다 큰 값을 반환합니다.
- 첫 번째 문자열이 두 번째 문자열보다 느린 경우 0보다 작은 값을 반환합니다.
class Program
{
static void Main(string[] args)
{
Console.WriteLine("\"ABCDEE\".CompareTo(\"ABCDDE\"): " + "ABCDEE".CompareTo("ABCDDE"));
Console.WriteLine("\"ABC\".CompareTo(\"abc\"): " + "ABC".CompareTo("abc"));
Console.WriteLine("\"ABC\".CompareTo(\"ABC\"): " + "ABC".CompareTo("ABC"));
}
}
실행 결과
대소문자를 무시하여 비교
첫 번째 방법은 두 문자열을 ToLower()
함수를 호출하여 소문자로 변환 후 비교하거나 ToUpper()
함수를 호출하여 대문자로 변환 후 비교합니다.
class Program
{
static void Main(string[] args)
{
Console.WriteLine("\"ABCDE\" == \"abcde\": " + ("ABCDE".ToLower() == "abcde".ToLower()));
Console.WriteLine("\"ABC\" == \"abc\": " + ("ABC".ToLower() == "abc".ToLower()));
Console.WriteLine("\"ABCDE\" == \"abcde\": " + ("ABCDE".ToUpper() == "abcde".ToUpper()));
Console.WriteLine("\"ABC\" == \"abc\": " + ("ABC".ToUpper() == "abc".ToUpper()));
}
}
실행 결과
두 번째 방법은 Equals()
함수에서 StringComparison.OrdinalIgnoreCase
를 매개변수로 사용합니다.
class Program
{
static void Main(string[] args)
{
Console.WriteLine("\"AAA\".Equals(\"aaa\"): " + "AAA".Equals("aaa", StringComparison.OrdinalIgnoreCase));
Console.WriteLine("\"ABC\".Equals(\"abc\"): " + "ABC".Equals("abc", StringComparison.OrdinalIgnoreCase));
Console.WriteLine("string.Equals(\"AAA\", \"abc\"): " + string.Equals("AAA", "aaa", StringComparison.OrdinalIgnoreCase));
Console.WriteLine("string.Equals(\"ABC\", \"abc\"): " + string.Equals("ABC", "abc", StringComparison.OrdinalIgnoreCase));
}
}
실행 결과
세 번째 방법은 Compare()
함수의 세 번째 매개변수로 true를 전달합니다. 세 번째 매개변수는 대소문자 무시 여부입니다.
class Program
{
static void Main(string[] args)
{
Console.WriteLine("string.Compare(\"AAA\", \"aaa\"): " + string.Compare("AAA", "aaa", true));
Console.WriteLine("string.Compare(\"ABC\", \"abc\"): " + string.Compare("ABC", "abc", true));
}
}
실행 결과
'C# > 문자열' 카테고리의 다른 글
[C#]특정 문자열 제거하는 방법 (0) | 2022.08.15 |
---|---|
[C#]문자열 배열을 문자열로 변환(String Array to String) (0) | 2022.08.15 |
[C#]문자열을 정수로 변환 방법(String to Int) (0) | 2021.09.25 |
[C#]문자열 나누기(Split), 자르기(Substring) (0) | 2021.09.12 |
[C#]문자열(String)이 null인지 공백인지 확인하는 방법 (0) | 2021.08.26 |
댓글