C#에서 StringCollection에 저장된 문자열 중 특정 값이 처음 등장하는 위치(인덱스)를 확인하고 싶다면 IndexOf 메서드를 사용하면 됩니다. 이 메서드는 컬렉션을 처음부터 순회하며 일치하는 첫 번째 요소의 인덱스를 반환합니다.
아래 예제 코드를 통해 실제 동작 방식을 살펴보겠습니다.
예제 1: Insert 후 IndexOf로 인덱스 찾기
using System;
using System.Collections.Specialized;
public class Demo {
public static void Main() {
StringCollection strCol = new StringCollection();
strCol.Add("Accessories");
strCol.Add("Books");
strCol.Add("Electronics");
strCol.Add("Books");
Console.WriteLine("StringCollection 요소...");
foreach (string res in strCol) {
Console.WriteLine(res);
}
strCol.Insert(2, "Headphone");
Console.WriteLine("StringCollection 요소... 업데이트됨");
foreach (string res in strCol) {
Console.WriteLine(res);
}
Console.WriteLine("Books가 처음 나타나는 인덱스 = " + strCol.IndexOf("Books"));
}
}출력 결과
StringCollection 요소... Accessories Books Electronics Books StringCollection 요소... 업데이트됨 Accessories Books Headphone Electronics Books Books가 처음 나타나는 인덱스 = 1
위 출력에서 볼 수 있듯이, 컬렉션에는 "Books"가 두 번 포함되어 있지만 IndexOf("Books")는 가장 앞쪽에 있는 1번 인덱스만 반환합니다. 또한 Insert(2, "Headphone")으로 새 요소를 삽입한 뒤에도 기존 "Books"의 위치가 올바르게 유지되는 것을 확인할 수 있습니다.
예제 2: AddRange로 배열 추가 후 인덱스 찾기
이번에는 문자열 배열을 AddRange로 한 번에 추가하고, 중복된 요소의 인덱스를 조회하는 예제입니다.
using System;
using System.Collections.Specialized;
public class Demo {
public static void Main() {
StringCollection strCol = new StringCollection();
String[] strArr = new String[] { "A", "B", "C", "D", "E", "F", "D", "H" };
Console.WriteLine("StringCollection 요소...");
foreach (string str in strArr) {
Console.WriteLine(str);
}
strCol.AddRange(strArr);
Console.WriteLine("인덱스 5의 요소 = " + strCol[5]);
Console.WriteLine("StringCollection의 문자열 개수 = " + strCol.Count);
Console.WriteLine("D가 처음 나타나는 인덱스 = " + strCol.IndexOf("D"));
}
}출력 결과
StringCollection 요소... A B C D E F D H 인덱스 5의 요소 = F StringCollection의 문자열 개수 = 8 D가 처음 나타나는 인덱스 = 3
핵심 정리
IndexOf(string)은 지정한 문자열과 일치하는 첫 번째 요소의 인덱스(0부터 시작)를 반환합니다.- 중복된 값이 여러 개 있어도 항상 가장 앞에 있는 항목만 반환됩니다.
- 일치하는 요소가 없으면
-1을 반환합니다. - 대소문자를 구분하므로 검색 시 주의가 필요합니다.