Giới thiệu
Thuộc tính indexer Chars[int index] (viết tắt this[int index]) của StringBuilder cho phép đọc hoặc ghi ký tự tại vị trí chỉ định. Cho phép truy cập ngẫu nhiên O(1) vào bộ đệm ký tự nội bộ.
Cú pháp
public char this[int index] { get; set; }
Ví dụ 1 - Đếm chữ số trong chuỗi
using System;
using System.Text;
public class Demo
{
public static void Main()
{
StringBuilder strBuilder = new StringBuilder("ghgh78hkjj");
int num = 0;
for (int i = 0; i < strBuilder.Length; i++)
{
char c = strBuilder[i];
if (Char.IsDigit(c))
num++;
}
Console.WriteLine("Chuỗi = " + strBuilder);
Console.WriteLine("Số lượng chữ số trong chuỗi = " + num);
}
}
Kết quả
Chuỗi = ghgh78hkjj Số lượng chữ số trong chuỗi = 2
Ví dụ 2 - Đọc và ghi ký tự
using System;
using System.Text;
public class Demo
{
public static void Main()
{
StringBuilder strBuilder = new StringBuilder("ghgh78hkjj");
char c = strBuilder[3]; // Đọc ký tự tại index 3
Console.WriteLine("Chuỗi = " + strBuilder);
Console.WriteLine("Ký tự tại index 3 = " + c);
// Ghi đè ký tự
strBuilder[3] = 'X';
Console.WriteLine("Chuỗi sau khi thay đổi = " + strBuilder);
}
}
Kết quả
Chuỗi = ghgh78hkjj Ký tự tại index 3 = h Chuỗi sau khi thay đổi = ghgX78hkjj
Lưu ý quan trọng
- Indexer cho phép cả đọc và ghi (khác với
stringimmutable chỉ đọc). - Ném
IndexOutOfRangeExceptionnếu index < 0 hoặc >=Length. - Độ dài
Lengthcó thể thay đổi (Append, Remove, Insert), indexer luôn phản ánh trạng thái hiện tại. - Ký tự Unicode surrogate pair (emoji) chiếm 2 vị trí index.
- Hiệu suất O(1) cho truy cập ngẫu nhiên, phù hợp cho thuật toán thao tác chuỗi phức tạp.