คุณสมบัติ (indexer) StringBuilder.Chars[int index] ใน C# ใช้เข้าถึงหรือตั้งค่าตัวอักษรที่ตำแหน่งที่ระบุใน StringBuilder
ไวยากรณ์ (Syntax)
public char this[int index] { get; set; }
- index — ตำแหน่งของตัวอักษร (zero-based)
- Get: คืนค่า char ที่ตำแหน่งนั้น
- Set: กำหนดค่า char ใหม่ที่ตำแหน่งนั้น
- โยน
ArgumentOutOfRangeExceptionหาก index < 0 หรือ ≥ Length
ตัวอย่างที่ 1: นับตัวเลขใน StringBuilder
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("String = " + strBuilder);
Console.WriteLine("Numbers in the string = " + num);
}
}
ผลลัพธ์
String = ghgh78hkjj Numbers in the string = 2
ตัวอย่างที่ 2: อ่านและเขียนตัวอักษรผ่าน Indexer
using System;
using System.Text;
public class Demo
{
public static void Main()
{
StringBuilder strBuilder = new StringBuilder("ghgh78hkjj");
char c = strBuilder[3]; // อ่านตัวที่ index 3
Console.WriteLine("String = " + strBuilder);
Console.WriteLine("Character at index 3 = " + c);
// ตัวอย่างการเขียน (แก้ไข)
strBuilder[3] = 'X';
Console.WriteLine("After modification: " + strBuilder); // ghgX78hkjj
}
}
ผลลัพธ์
String = ghgh78hkjj Character at index 3 = h After modification: ghgX78hkjj
สรุป
StringBuilder.Chars[index](เขียนเป็นstrBuilder[index]) ใช้เข้าถึง/แก้ไขตัวอักษรแต่ละตัว- StringBuilder เป็น mutable — แก้ไขตัวอักษรได้โดยไม่สร้างอ็อบเจ็กต์ใหม่
- ต่างจาก
string(immutable) ที่ไม่มี setter สำหรับ indexer - Complexity: O(1) สำหรับการเข้าถึง/ตั้งค่าตัวอักษรเดี่ยว
- ใช้เมื่อ: ต้องการแก้ไขสตริงหลายครั้ง, สร้างสตริงยาวๆ แบบ incremental, performance critical
เมธอด StringBuilder ที่เกี่ยวข้องกับการเข้าถึงตัวอักษร
| เมธอด/คุณสมบัติ | คำอธิบาย |
|---|---|
| Chars[int] (indexer) | อ่าน/เขียนตัวอักษรตำแหน่ง index |
| Length | จำนวนตัวอักษรปัจจุบัน |
| Capacity | ความจุปัจจุบัน (ขยายอัตโนมัติ) |
| ToString() | แปลงเป็น string (immutable) |
| ToString(start, len) | แปลง substring เป็น string |
| Append/Insert/Remove/Replace | ปรับเปลี่ยนเนื้อหา |
| Clear() | ล้างเนื้อหา (Length = 0) |
| EnsureCapacity() | รับประกันความจุขั้นต่ำ |