먼저 변경할 대상이 되는 문자열이 있다고 가정해 보겠습니다.
StringBuilder str = new StringBuilder();
str.Append("pre");
C#에서 string 타입은 불변(immutable)이기 때문에 한 번 생성된 문자열의 특정 문자를 직접 수정할 수 없습니다. 반면 StringBuilder는 가변(mutable) 객체이므로 인덱스를 사용해 특정 위치의 문자를 손쉽게 변경할 수 있습니다.
문자를 변경하려면 해당 인덱스 위치에 새로운 값을 할당하면 됩니다. 아래 코드는 세 번째 위치의 문자를 'o'로 바꾸는 예시입니다.
str[2] = 'o';
C#의 인덱스는 0부터 시작하므로 세 번째 문자의 인덱스는 2가 됩니다. 다음은 전체 코드입니다.
예제
using System;
using System.Text;
public class Demo {
public static void Main() {
StringBuilder str = new StringBuilder();
str.Append("pre");
Console.WriteLine("String : "+str);
Console.WriteLine("Change 3rd character");
str[2] = 'o';
Console.WriteLine("New String : "+str);
}
}
실행 결과
String : pre Change 3rd character New String : pro
실행 결과를 보면 원래 문자열 "pre"의 세 번째 문자 'e'가 'o'로 변경되어 최종적으로 "pro"가 된 것을 확인할 수 있습니다. 이처럼 StringBuilder의 인덱서(indexer)를 활용하면 문자열 내부의 특정 문자를 간단하게 교체할 수 있습니다.