C# StringBuilder.Chars[] 속성이란?
StringBuilder.Chars[] 속성은 현재 StringBuilder 인스턴스에서 지정된 위치에 있는 문자를 가져오거나(get) 설정(set)할 수 있게 해주는 인덱서(indexer)입니다. 이 속성 덕분에 StringBuilder 객체를 배열처럼 다루면서 각 문자에 직접 접근할 수 있습니다.
문자열을 반복하면서 특정 조건의 문자를 검사하거나, 원하는 위치의 문자를 수정해야 할 때 매우 유용하게 사용됩니다.
구문(Syntax)
Chars[] 속성의 기본 구문은 다음과 같습니다.
public char this[int index] { get; set; }여기서 index 매개변수는 가져오거나 설정하려는 문자의 위치를 나타내며, 0부터 시작하는(zero-based) 인덱스입니다. 즉, 첫 번째 문자의 인덱스는 0입니다.
참고: 유효 범위를 벗어난 인덱스(0 미만 또는 Length 이상)에 접근하면 IndexOutOfRangeException 예외가 발생합니다.
예제 1: 문자열 내 숫자 개수 세기
다음 예제는 Chars[] 속성을 사용해 문자열의 각 문자를 순회하면서 숫자가 몇 개인지 세어 보는 코드입니다.
using System;
using System.Text;
public class Demo {
public static void Main() {
StringBuilder strBuilder = new StringBuilder("ghgh78hkjj");
int num = 0;
for (int i = 0; i < strBuilder.Length; i++) {
char c = strBuilder[i]; // Chars[] 속성으로 i번째 문자 접근
if (Char.IsDigit(c))
num++;
}
Console.WriteLine("String = " + strBuilder);
Console.WriteLine("Numbers in the string = " + num);
}
}출력 결과
String = ghgh78hkjj Numbers in the string = 2
위 예제에서 strBuilder[i]는 내부적으로 Chars[] 속성을 호출하여 i번째 문자를 반환합니다. 반복문을 통해 모든 문자를 검사한 결과, 문자열 "ghgh78hkjj"에는 '7'과 '8' 두 개의 숫자가 포함되어 있으므로 2가 출력됩니다.
예제 2: 특정 위치의 문자 가져오기
이번에는 원하는 인덱스의 문자 하나를 직접 조회하는 예제입니다.
using System;
using System.Text;
public class Demo {
public static void Main() {
StringBuilder strBuilder = new StringBuilder("ghgh78hkjj");
char c = strBuilder[3]; // 인덱스 3(네 번째 문자) 접근
Console.WriteLine("String = " + strBuilder);
Console.WriteLine("Character = " + c);
}
}출력 결과
String = ghgh78hkjj Character = h
인덱스는 0부터 시작하기 때문에 strBuilder[3]은 네 번째 문자인 'h'를 반환합니다. 만약 해당 위치의 값을 변경하고 싶다면 strBuilder[3] = 'X';처럼 대입하여 set 동작을 활용할 수도 있습니다.
정리
- StringBuilder.Chars[]는 지정된 위치의 문자를 읽거나 쓸 수 있는 인덱서 속성입니다.
- 인덱스는 0부터 시작하며, 범위를 벗어나면 예외가 발생합니다.
- 반복문과 함께 사용하면 문자열 전체를 효율적으로 탐색할 수 있습니다.