Giới thiệu
Phương thức ToCharArray() của lớp String chuyển đổi chuỗi thành mảng ký tự Unicode (char[]). Có hai overload: copy toàn bộ chuỗi, hoặc copy một đoạn con.
Cú pháp
public char[] ToCharArray(); public char[] ToCharArray(int startIndex, int length);
Ví dụ 1 - Copy toàn bộ chuỗi
using System;
public class Demo
{
public static void Main(string[] args)
{
string str1 = "Notebook";
string str2 = "Ultrabook";
char[] arr1 = str1.ToCharArray();
char[] arr2 = str2.ToCharArray();
Console.WriteLine("String1 = " + str1);
Console.WriteLine("String1 ToUpperInvariant = " + str1.ToUpperInvariant());
Console.WriteLine("String1 Substring từ index 4 = " + str1.Substring(4, 4));
Console.Write("Mảng ký tự String1 = ");
for (int i = 0; i < arr1.Length; i++)
Console.Write(" " + arr1[i]);
Console.WriteLine("\n\nString2 = " + str2);
Console.WriteLine("String2 ToLowerInvariant = " + str2.ToLowerInvariant());
Console.WriteLine("String2 Substring từ index 0, độ dài 5 = " + str2.Substring(0, 5));
Console.Write("Mảng ký tự String2 = ");
for (int i = 0; i < arr2.Length; i++)
Console.Write(" " + arr2[i]);
}
}
Kết quả
String1 = Notebook String1 ToUpperInvariant = NOTEBOOK String1 Substring từ index 4 = book Mảng ký tự String1 = N o t e b o o k String2 = Ultrabook String2 ToLowerInvariant = ultrabook String2 Substring từ index 0, độ dài 5 = Ultra Mảng ký tự String2 = U l t r a b o o k
Ví dụ 2 - Copy đoạn con
using System;
public class Demo
{
public static void Main(string[] args)
{
string str1 = "Welcome!";
string str2 = "Thisisit!";
// Copy 2 ký tự từ index 3: "co"
char[] arr1 = str1.ToCharArray(3, 2);
// Copy 2 ký tự từ index 2: "is"
char[] arr2 = str2.ToCharArray(2, 2);
Console.WriteLine("String1 = " + str1);
Console.WriteLine("String1 ToUpperInvariant = " + str1.ToUpperInvariant());
Console.WriteLine("String1 Substring từ index 4 = " + str1.Substring(4, 4));
Console.Write("Mảng ký tự String1 = ");
for (int i = 0; i < arr1.Length; i++)
Console.Write(" " + arr1[i]);
Console.WriteLine("\n\nString2 = " + str2);
Console.WriteLine("String2 ToLowerInvariant = " + str2.ToLowerInvariant());
Console.WriteLine("String2 Substring từ index 0, độ dài 5 = " + str2.Substring(0, 5));
Console.Write("Mảng ký tự String2 = ");
for (int i = 0; i < arr2.Length; i++)
Console.Write(" " + arr2[i]);
}
}
Kết quả
String1 = Welcome! String1 ToUpperInvariant = WELCOME! String1 Substring từ index 4 = ome! Mảng ký tự String1 = c o String2 = Thisisit! String2 ToLowerInvariant = thisisit! String2 Substring từ index 0, độ dài 5 = Thisi Mảng ký tự String2 = i s
Lưu ý quan trọng
ToCharArray()cấp phát mảng mới mỗi lần gọi.- Nếu chỉ cần duyệt ký tự, dùng
foreach (char c in str)hiệu quả hơn (không cấp phát mảng). - Để copy vào mảng có sẵn, dùng
CopyTo(). - Chuỗi trong .NET là immutable, ToCharArray tạo bản sao dữ liệu.
- Ký tự Unicode surrogate pair (emoji, ký tự hiếm) chiếm 2 char trong mảng.