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
StringBuilderlà 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);