Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

คุณสมบัติ StringBuilder.Chars[] ใน C#

คุณสมบัติ (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()รับประกันความจุขั้นต่ำ