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

Phương thức StringBuilder.CopyTo() trong C#

Giới thiệu

Phương thức CopyTo() của StringBuilder sao chép một đoạn ký tự từ StringBuilder vào mảng char[] đích tại vị trí chỉ định. Cho phép tái sử dụng buffer mảng ký tự, tránh cấp phát mới như ToString().ToCharArray().

Cú pháp

public void CopyTo(int sourceIndex, char[] destination, int destinationIndex, int count);
  • sourceIndex: Vị trí bắt đầu trong StringBuilder (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;
using System.Text;

public class Demo
{
    public static void Main()
    {
        StringBuilder strBuilder = new StringBuilder("ghgh78hkjj");
        char c = strBuilder[3]; // Truy cập ký tự tại index 3
        Console.WriteLine("Chuỗi = " + strBuilder);
        Console.WriteLine("Ký tự tại index 3 = " + c);

        char[] arr = new char[15];
        // Copy 6 ký tự từ index 3 ("78hkjj") vào arr từ index 2
        strBuilder.CopyTo(3, arr, 2, 6);

        Console.WriteLine("\nChuỗi đã copy vào mảng char...");
        Console.WriteLine(arr); // In từ đầu mảng: 2 ký tự '\0' rồi "78hkjj"
    }
}

Kết quả

Chuỗi = ghgh78hkjj
Ký tự tại index 3 = h

Chuỗi đã copy vào mảng char...
  78hkjj

Ví dụ 2

using System;
using System.Text;

public class Demo
{
    public static void Main()
    {
        StringBuilder strBuilder = new StringBuilder("JohnWick");
        Console.WriteLine("Chuỗi = " + strBuilder);

        char[] arr = new char[5] { 'a', 'b', 'c', 'd', 'e' };
        // Copy 3 ký tự từ index 1 ("ohn") vào arr từ index 1
        strBuilder.CopyTo(1, arr, 1, 3);

        Console.WriteLine("\nChuỗi đã copy vào mảng char...");
        Console.WriteLine(arr); // "a" + "ohn" + "e" = "aohne"
    }
}

Kết quả

Chuỗi = JohnWick
Chuỗi đã copy vào mảng char...
aohne

Lưu ý quan trọng

  • StringBuilder là mutable (có thể thay đổi), phù hợp cho thao tác chuỗi nhiều lần.
  • Indexer sb[index] cho phép đọc/ghi ký tự đơn lẻ.
  • CopyTo() ném exception nếu chỉ số vượt phạm vi hoặc mảng đích quá nhỏ.
  • Hiệu suất tốt hơn ToString().ToCharArray() khi chỉ cần phần của chuỗi.
  • Để lấy toàn bộ nội dung: char[] arr = new char[sb.Length]; sb.CopyTo(0, arr, 0, sb.Length);