C#에서 문자열 배열에 특정 문자열이 포함되어 있는지 확인해야 하는 경우가 자주 있습니다. 이때 가장 간편하게 사용할 수 있는 것이 Contains() 메서드입니다.
Contains()는 대상 문자열 안에 특정 부분 문자열(substring)이 존재하는지 검사하는 메서드로, 결과를 불리언(Boolean) 값으로 반환합니다. 부분 문자열이 존재하거나 검색값이 빈 문자열("")이면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
예외: 검색 대상이 null이면 ArgumentNullException이 발생할 수 있습니다.
또한 이 메서드는 대소문자를 구분하며, 항상 문자열의 첫 번째 문자 위치부터 시작하여 마지막 문자 위치까지 순서대로 검색을 수행합니다.
배열에서 특정 문자열 찾기
문자열 배열 전체에서 특정 문자열을 찾으려면 System.Linq 네임스페이스의 Enumerable.Contains() 확장 메서드를 사용하는 것이 효율적입니다. 아래 예제들을 통해 다양한 방법을 살펴보겠습니다.
예제 1: 대소문자가 일치하지 않는 경우
Contains()는 대소문자를 구분하기 때문에 "sachin"으로 검색하면 배열의 "Sachin"과 일치하지 않아 false를 반환합니다.
static void Main(string[] args){
string[] strs = { "Sachin", "India", "Bangalore", "Karnataka", "Delhi" };
if (strs.Contains("sachin")){
System.Console.WriteLine("String Present");
} else {
System.Console.WriteLine("String Not Present");
}
Console.ReadLine();
}출력 결과
String Not Present
예제 2: 대소문자가 정확히 일치하는 경우
검색어의 대소문자가 배열 요소와 정확히 일치하면 true가 반환되어 해당 문자열이 존재함을 알 수 있습니다.
static void Main(string[] args){
string[] strs = { "Sachin", "India", "Bangalore", "Karnataka", "Delhi" };
if (strs.Contains("Sachin")){
System.Console.WriteLine("String Present");
} else {
System.Console.WriteLine("String Not Present");
}
Console.ReadLine();
}출력 결과
String Present
예제 3: LINQ Where()와 FirstOrDefault() 활용
존재 여부만 확인하는 것이 아니라 조건에 맞는 요소 값을 직접 가져오고 싶다면 Where()와 FirstOrDefault()를 함께 사용할 수 있습니다.
static void Main(string[] args){
string[] strs = { "Sachin", "India", "Bangalore", "Karnataka", "Delhi" };
var res = strs.Where(x => x == "Sachin").FirstOrDefault();
System.Console.WriteLine(res);
Console.ReadLine();
}출력 결과
Sachin
예제 4: foreach 반복문 활용
LINQ를 사용하지 않고 전통적인 foreach 반복문으로도 배열의 각 요소를 직접 비교하여 확인할 수 있습니다.
static void Main(string[] args){
string[] strs = { "Sachin", "India", "Bangalore", "Karnataka", "Delhi" };
foreach (var item in strs){
if (item == "Sachin"){
System.Console.WriteLine("String is present");
}
}
Console.ReadLine();
}출력 결과
String is present
정리
문자열 배열에서 특정 문자열의 존재 여부를 확인할 때는 LINQ의 Contains()가 가장 간결하고 가독성이 뛰어납니다. 대소문자를 구분하지 않고 비교하려면 ToLower() 등으로 문자열을 정규화하거나 StringComparison 옵션을 활용하면 됩니다. 조건에 맞는 요소 값을 직접 얻어야 한다면 Where().FirstOrDefault() 조합을, 별도의 LINQ 없이 단순하게 처리하고 싶다면 foreach 반복문을 사용하는 것이 좋습니다.