Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Phương thức CopyTo() của String trong C#

Giới thiệu

Phương thức CopyTo() của lớp String sao chép một đoạn con của chuỗi hiện tại vào mảng ký tự Unicode (char[]) tại vị trí chỉ định. Đây là cách hiệu quả để trích xuất phần chuỗi vào buffer ký tự có sẵn.

Cú pháp

public void CopyTo(int sourceIndex, char[] destination, int destinationIndex, int count);
  • sourceIndex: Vị trí bắt đầu trong chuỗi nguồn (0-based).
  • destination: Mảng char đích.
  • destinationIndex: Vị trí bắt đầu ghi trong mảng đích.
  • count: Số ký tự cần copy.

Ví dụ 1

using System;

public class Demo
{
    public static void Main()
    {
        string str = "JohnAndJacob";
        Console.WriteLine("Chuỗi = " + str);

        char[] destArr = new char[20];
        // Copy 4 ký tự từ vị trí 1 ("ohnA") vào destArr từ vị trí 0
        str.CopyTo(1, destArr, 0, 4);

        Console.Write("Mảng đích: ");
        Console.WriteLine(destArr); // In: ohnA (các phần tử còn lại là '\0')
    }
}

Kết quả

Chuỗi = JohnAndJacob
Mảng đích: ohnA

Ví dụ 2 - Copy vào mảng đã có dữ liệu

using System;

public class Demo
{
    public static void Main()
    {
        string str = "JohnAndJacob";
        Console.WriteLine("Chuỗi = " + str);

        char[] destArr = new char[20];
        // Khởi tạo mảng đích
        destArr[0] = 'A';
        destArr[1] = 'B';
        destArr[2] = 'C';
        destArr[3] = 'D';
        Console.WriteLine("Mảng đích ban đầu: " + new string(destArr)); // "ABCD........"

        // Copy 4 ký tự từ vị trí 2 ("hnAn") vào destArr từ vị trí 3
        str.CopyTo(2, destArr, 3, 4);

        Console.Write("Mảng đích sau CopyTo: ");
        Console.WriteLine(destArr); // "ABC" + "hnAn" + phần còn lại
    }
}

Kết quả

Chuỗi = JohnAndJacob
Mảng đích ban đầu: ABCD
Mảng đích sau CopyTo: ABChnAn

Lưu ý quan trọng

  • Phương thức không trả về giá trị (void), ghi trực tiếp vào mảng đích.
  • Ném ArgumentOutOfRangeException nếu chỉ số vượt phạm vi.
  • Ném ArgumentNullException nếu mảng đích là null.
  • Khác với ToCharArray() tạo mảng mới, CopyTo() ghi vào mảng có sẵn (tái sử dụng buffer).
  • Để copy toàn bộ chuỗi: str.CopyTo(0, dest, 0, str.Length) hoặc dùng str.ToCharArray().