C#에서 대소문자 구분하지 않는 문자열 포함 확인: 'Contains(string)' 사용
StringComparison 열거형 사용
다음과 같이 StringComparison
열거형을 사용하여 대소문자를 구분하지 않는 비교를 지정할 수 있습니다.
string text = "Hello, World!";
string target = "world";
if (text.Contains(target, StringComparison.OrdinalIgnoreCase))
{
Console.WriteLine("텍스트에 'world'가 포함되어 있습니다.");
}
else
{
Console.WriteLine("텍스트에 'world'가 없습니다.");
}
위 코드에서 StringComparison.OrdinalIgnoreCase
매개 변수는 대소문자를 구분하지 않고 비교하도록 지정합니다.
ToUpper() 또는 ToLower() 사용
다음과 같이 ToUpper()
또는 ToLower()
메서드를 사용하여 문자열을 모두 대문자 또는 소문자로 변환한 후 비교할 수 있습니다.
string text = "Hello, World!";
string target = "world";
string upperText = text.ToUpper();
string lowerTarget = target.ToLower();
if (upperText.Contains(lowerTarget))
{
Console.WriteLine("텍스트에 'world'가 포함되어 있습니다.");
}
else
{
Console.WriteLine("텍스트에 'world'가 없습니다.");
}
위 코드에서 ToUpper()
메서드는 text
문자열을 모두 대문자로 변환하고, ToLower()
메서드는 target
문자열을 모두 소문자로 변환합니다. 이렇게 변환된 후 Contains()
메서드를 사용하여 비교합니다.
LINQ 사용
LINQ를 사용하여 다음과 같이 대소문자를 구분하지 않고 문자열 포함 여부를 확인할 수 있습니다.
string text = "Hello, World!";
string target = "world";
var isContains = text.Any(c => c.ToString().ToLower() == target.ToLower());
if (isContains)
{
Console.WriteLine("텍스트에 'world'가 포함되어 있습니다.");
}
else
{
Console.WriteLine("텍스트에 'world'가 없습니다.");
}
위 코드에서 Any()
메서드는 text
문자열의 각 문자에 대해 람다 식을 실행합니다. 람다 식은 문자를 소문자로 변환하고, target
문자열의 소문자와 일치하는지 확인합니다. Any()
메서드는 일치하는 문자가 하나라도 있으면 true
를 반환합니다.
결론
C#에서 대소문자 구분하지 않는 문자열 포함 여부를 확인하는 방법은 여러 가지가 있습니다. 상황에 따라 적합한 방법을 선택하는 것이 중요합니다.
- 간단하고 직관적인 방법:
StringComparison.OrdinalIgnoreCase
매개 변수를 사용하는Contains()
메서드 - 코드 가독성 향상:
ToUpper()
또는ToLower()
메서드를 사용하여 문자열을 변환한 후 비교 - LINQ 사용: 간결하고 함수형 프로그래밍 스타일 구현
C# 대소문자 구분하지 않는 문자열 포함 확인 예제 코드
StringComparison 열거형 사용:
string text = "Hello, World!";
string target = "world";
if (text.Contains(target, StringComparison.OrdinalIgnoreCase))
{
Console.WriteLine("텍스트에 'world'가 포함되어 있습니다.");
}
else
{
Console.WriteLine("텍스트에 'world'가 없습니다.");
}
ToUpper() 또는 ToLower() 사용:
string text = "Hello, World!";
string target = "world";
string upperText = text.ToUpper();
string lowerTarget = target.ToLower();
if (upperText.Contains(lowerTarget))
{
Console.WriteLine("텍스트에 'world'가 포함되어 있습니다.");
}
else
{
Console.WriteLine("텍스트에 'world'가 없습니다.");
}
LINQ 사용:
string text = "Hello, World!";
string target = "world";
var isContains = text.Any(c => c.ToString().ToLower() == target.ToLower());
if (isContains)
{
Console.WriteLine("텍스트에 'world'가 포함되어 있습니다.");
}
else
{
Console.WriteLine("텍스트에 'world'가 없습니다.");
}
각 예제 코드는 동일한 결과를 출력합니다:
텍스트에 'world'가 포함되어 있습니다.
C#에서 대소문자 구분하지 않는 문자열 포함 확인: 대체 방법
문화권 설정 사용:
다음과 같이 CultureInfo
클래스를 사용하여 문화권을 설정하고 대소문자 구분 비교를 수행할 수 있습니다.
string text = "Hello, World!";
string target = "world";
CultureInfo culture = CultureInfo.InvariantCulture;
if (text.Contains(target, culture))
{
Console.WriteLine("텍스트에 'world'가 포함되어 있습니다.");
}
else
{
Console.WriteLine("텍스트에 'world'가 없습니다.");
}
위 코드에서 CultureInfo.InvariantCulture
는 대소문자 구분을 무시하도록 설정된 문화권을 나타냅니다. 다른 문화권을 사용하여 해당 문화권의 대소문자 규칙에 따라 비교することも 가능합니다.
정규 표현식 사용:
다음과 같이 정규 표현식을 사용하여 대소문자를 구분하지 않는 패턴 매칭을 수행할 수 있습니다.
string text = "Hello, World!";
string target = "world";
Regex regex = new Regex(target, RegexOptions.IgnoreCase);
if (regex.IsMatch(text))
{
Console.WriteLine("텍스트에 'world'가 포함되어 있습니다.");
}
else
{
Console.WriteLine("텍스트에 'world'가 없습니다.");
}
위 코드에서 RegexOptions.IgnoreCase
옵션은 정규 표현식 매칭에서 대소문자를 구분하지 않도록 합니다.
확장 메서드 사용:
다음과 같이 String
클래스에 대한 확장 메서드를 만들어 대소문자 구분하지 않는 Contains()
메서드를 사용할 수 있습니다.
public static class StringExtensions
{
public static bool ContainsIgnoreCase(this string text, string target)
{
return text.IndexOf(target, StringComparison.OrdinalIgnoreCase) >= 0;
}
}
string text = "Hello, World!";
string target = "world";
if (text.ContainsIgnoreCase(target))
{
Console.WriteLine("텍스트에 'world'가 포함되어 있습니다.");
}
else
{
Console.WriteLine("텍스트에 'world'가 없습니다.");
}
위 코드에서 ContainsIgnoreCase
확장 메서드는 IndexOf()
메서드를 사용하여 대소문자를 구분하지 않고 문자열을 검색합니다.
주의 사항:
- 위에 제시된 대체 방법들은 모두 다소 복잡하거나 성능 저하를 초래할 수 있습니다. 따라서 간단하고 직관적인
StringComparison.OrdinalIgnoreCase
매개 변수를 사용하는Contains()
메서드를 사용하는 것이 일반적으로 가장 좋습니다. - 특정 상황에서 성능이 중요한 경우,
ToUpper()
또는ToLower()
메서드를 사용하여 문자열을 변환한 후 비교하는 것이 더 효율적일 수 있습니다. - 코드 가독성이 중요한 경우, LINQ를 사용하여 간결하고 함수형 프로그래밍 스타일의 코드를 작성할 수 있습니다.
c# string contains