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

C# StringBuilder.CopyTo() 메서드 완벽 정리 – 문자열 세그먼트 복사 방법

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 배열로 효율적으로 복사해야 할 때 유용합니다. 원본 문자열을 수정하지 않고 필요한 구간만 선택적으로 복사할 수 있어, 문자 단위 데이터 처리나 버퍼 작업 시 활용도가 높습니다.