Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# StringBuilder.Chars[] 속성 완벽 가이드 – 특정 위치의 문자 다루기

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부터 시작하며, 범위를 벗어나면 예외가 발생합니다.
  • 반복문과 함께 사용하면 문자열 전체를 효율적으로 탐색할 수 있습니다.