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

C# 문자열 CopyTo() 메서드 완벽 가이드: 사용법과 예제

C#의 CopyTo() 메서드는 문자열(인스턴스) 내에서 지정한 위치부터 시작하는 일정 개수의 문자를, 유니코드 문자 배열(char[])의 지정한 위치로 복사할 때 사용합니다. 문자열의 일부분을 기존 문자 배열에 덮어쓰거나 삽입해야 할 때 유용하게 활용할 수 있습니다.

구문(Syntax)

public void CopyTo(int srcIndex, char[] dest, int destIndex, int count);

각 매개변수의 의미는 다음과 같습니다.

  • srcIndex − 복사를 시작할 원본 문자열 내 첫 번째 문자의 인덱스입니다.
  • dest − 문자열의 문자들이 복사될 대상 유니코드 문자 배열입니다.
  • destIndex − 대상 배열에서 복사가 시작되는 위치의 인덱스입니다.
  • count − 원본 문자열에서 대상 배열로 복사할 문자의 개수입니다.

예제 1

첫 번째 예제를 통해 CopyTo() 메서드의 기본적인 동작을 살펴보겠습니다.

using System;
public class Demo {
   public static void Main() {
      string str = "JohnAndJacob";
      Console.WriteLine("String = "+str);
      char[] destArr = new char[20];
      str.CopyTo(1, destArr, 0, 4);
      Console.Write(destArr);
   }
}

출력 결과

String = JohnAndJacob
ohnA

위 예제에서는 문자열 "JohnAndJacob"의 인덱스 1(두 번째 문자 'o')부터 4개의 문자('o', 'h', 'n', 'A')를 추출하여, 비어 있는 destArr 배열의 인덱스 0 위치부터 차례대로 복사했습니다. 그 결과 배열에는 "ohnA"가 저장되었습니다.

예제 2

이번에는 이미 값이 들어 있는 배열에 특정 위치부터 문자를 복사하는 예제입니다.

using System;
public class Demo {
   public static void Main() {
      string str = "JohnAndJacob";
      Console.WriteLine("String = "+str);
      char[] destArr = new char[20];
      destArr[0] = 'A';
      destArr[1] = 'B';
      destArr[2] = 'C';
      destArr[3] = 'D';
      Console.WriteLine(destArr);
      str.CopyTo(2, destArr, 3, 4);
      Console.Write(destArr);
   }
}

출력 결과

String = JohnAndJacob
ABCD
ABChnAn

이 예제에서는 먼저 destArr 배열의 앞부분에 'A', 'B', 'C', 'D'를 직접 할당했습니다. 이후 CopyTo(2, destArr, 3, 4)를 호출하면, 문자열의 인덱스 2('h')부터 4개의 문자('h', 'n', 'A', 'n')가 배열의 인덱스 3 위치부터 복사되어 기존의 'D'를 포함한 뒷부분이 덮어써집니다. 최종적으로 배열의 내용은 "ABChnAn"이 됩니다.

정리

CopyTo() 메서드는 SubString()과 달리 새로운 문자열을 생성하지 않고 기존 문자 배열에 직접 복사하기 때문에, 반복 작업 시 불필요한 객체 생성을 줄여 성능 면에서 유리합니다. 단, 복사 범위가 대상 배열의 크기를 초과하면 ArgumentOutOfRangeException이 발생하므로 인덱스와 count 값을 신중하게 지정해야 합니다.