반응형
== 연산자로 비교하기
C#에서 두 문자열을 비교하는 가장 쉬운 방법은 (==) double equals 연산자를 사용하는 것이다. 해당 연산자는 대소문자를 고려하여 각각의 문자가 동일한지 체크한다.
string name1 = "Alice";
bool isEqual = (name1 == "Alice"); // Returns true
해당 경우에서 name1을 문자열 "Alice"와 비교한다. 대소문자를 포함해도 두 문자는 동일하다. 그래서 결괏값은 true가 나온다.
bool isEqualLower = (name1 == "alice"); // Returns false
하지만 name1을 문자열 "alice"와 비교한 경우는 대소문자가 서로 다르기 때문에 결과값이 false로 나온다.
Equals() 메서드로 비교하기
문자열을 비교하는 다른 방법으로는 Equals() 메서드를 사용하는 것이다. 해당 메서드 또한 각각의 문자가 대소문자를 고려하여 동일한지를 체크한다.
string name1 = "ALICE";
bool isEqualMethod1 = name1.Equals("ALICE"); // Returns true
Console.WriteLine(isEqualMethod1);
string name2 = "ALICE";
bool isEqualMethod2 = name2.Equals("aLICE"); // Returns false
Console.WriteLine(isEqualMethod2);
대소문자를 무시하고 비교하기(Case-Insensitive Comparisons)
종종 대소문자에 상관없이 문자를 비교해야하는 상황들이 발생한다. 이때는 비교하는 문자들을 모두 소문자로 만들어 비교하거나 모두 대문자로 만들어서 비교한다.
string name1 = "Alice";
string name2 = "ALICE";
// Convert both strings to lowercase and compare
bool isCaseInsensitiveEqual = name1.ToLower().Equals(name2.ToLower()); // Returns true
bool isCaseInsensitiveEqualUpper = name1.ToUpper().Equals(name2.ToUpper()); // Returns true
bool areEqualIgnoreCase = name1.Equals(name2, StringComparison.OrdinalIgnoreCase); // Returns true
Console.WriteLine(isCaseInsensitiveEqual);
Console.WriteLine(isCaseInsensitiveEqualUpper);
Console.WriteLine(areEqualIgnoreCase);
Equals() 메서드의 경우 추가적인 옵션을 입력해서 대소문자 구분을 하지 않도록 하는 게 가능하다.
(Equals() 메서드의 인자로 StringComparison.OrdinalIgnoreCase 옵션을 추가)
== vs Equals() 둘 중 어떤 걸 써야하나?
== 연산자를 사용
- 가독성 : 간단하고 읽기 쉽다.
- 단순화된 구문 : 기본적인 값 비교와 동일해서 구문이 단순하다.
- 대소문자 구분 시 유용 : 기본적으로 대소문자를 구분하며, 사용자의 요구에 맞게 선택이 가능하다.
Equals() 메서드를 사용
- 명시적 의도 : 명시적으로 값 비교가 수행되고 있음을 표현한다.
- 유연한 비교 : 대소문자를 구분하지 않는 검사와 같은 다양한 비교 옵션을 제공한다.
- Null 안정성 : 특히 null이 아닌 문자열을 검사할 때 null 참조 예외(null reference exception)를 방지하는데 도움을 준다.
Best Practice
- 단순 비교 시 : == 연사자를 사용하자! 고급 요구 사항 없이 대소문자를 구분하는 경우에 사용하기 좋다.
- 대소문자 구분하지 않는 경우나 문화적 비교 시 : Equal() 메서드를 사용하자! 추가적인 옵션을 통해서 여러 문자열들을 비교하고 문화권별 규칙을 처리하는 게 가능하다.
참고 사이트
'프로그래밍 > C#' 카테고리의 다른 글
C# 비동기 프로그래밍 TAP이란 무엇인가? (0) | 2024.11.22 |
---|---|
C# 비동기 프로그래밍 APM이란 무엇인가? (0) | 2024.11.21 |
C# 프로그램 진입점 Main함수가 static인 이유 (1) | 2024.11.19 |
C# 비동기 프로그래밍 시작하기 (0) | 2024.10.08 |
C# HttpClient.PostAsync 사용하기 (0) | 2024.10.07 |
댓글