C#에서 StringBuilder.CopyTo() 메서드는 현재 StringBuilder 인스턴스의 지정된 구간에 있는 문자들을 대상 Char 배열의 지정된 위치로 복사할 때 사용됩니다.
문법(Syntax)
CopyTo() 메서드의 기본 문법은 다음과 같습니다.
public void CopyTo (int sourceIndex, char[] dest, int destIndex, int count);
각 매개변수의 의미는 다음과 같습니다.
- sourceIndex: 문자를 복사하기 시작할 원본 StringBuilder 내의 시작 위치
- dest: 문자가 복사될 대상 Char 배열
- destIndex: 대상 배열에서 문자를 저장하기 시작할 위치
- count: 복사할 문자의 개수
예제 1
첫 번째 예제를 통해 CopyTo() 메서드의 동작 방식을 살펴보겠습니다.
using System;
using System.Text;
public class Demo {
public static void Main() {
StringBuilder strBuilder = new StringBuilder("ghgh78hkjj");
char c = strBuilder[3];
Console.WriteLine("String = " + strBuilder);
Console.WriteLine("Character = " + c);
char[] arr = new char[15];
strBuilder.CopyTo(3, arr, 2, 6);
Console.WriteLine("\nCopied String in char array...");
Console.WriteLine(arr);
}
}출력 결과
String = ghgh78hkjj Character = h Copied String in char array... h78hkj
위 예제에서는 인덱스 3부터 6개의 문자(“78hkjj” 중 “h78hkj”)를 추출하여 배열의 인덱스 2 위치부터 복사했습니다. 그 결과 배열에는 “h78hkj”가 저장되었습니다.
예제 2
이번에는 이미 값이 채워져 있는 Char 배열에 일부만 덮어쓰는 예제입니다.
using System;
using System.Text;
public class Demo {
public static void Main() {
StringBuilder strBuilder = new StringBuilder("JohnWick");
Console.WriteLine("String = " + strBuilder);
char[] arr = new char[5] {'a', 'b', 'c', 'd', 'e'};
strBuilder.CopyTo(1, arr, 1, 3);
Console.WriteLine("\nCopied String in char array...");
Console.WriteLine(arr);
}
}출력 결과
이 코드는 다음과 같은 결과를 출력합니다.
String = JohnWick Copied String in char array... aohne
위 예제에서는 “JohnWick”의 인덱스 1부터 3개의 문자(“ohn”)를 가져와 기존 배열 {‘a’, ‘b’, ‘c’, ‘d’, ‘e’}의 인덱스 1 위치부터 덮어썼습니다. 따라서 ‘b’, ‘c’, ‘d’가 ‘o’, ‘h’, ‘n’으로 변경되어 최종적으로 “aohne”라는 결과가 출력됩니다.
정리
StringBuilder.CopyTo() 메서드는 문자열의 특정 부분을 Char 배열로 효율적으로 복사해야 할 때 유용합니다. 원본 문자열을 수정하지 않고 필요한 구간만 선택적으로 복사할 수 있어, 문자 단위 데이터 처리나 버퍼 작업 시 활용도가 높습니다.