ใน C# สตริงเป็น Immutable (ไม่สามารถเปลี่ยนแปลงได้หลังสร้าง) เพื่อลบตัวอักษร ต้องใช้ StringBuilder ซึ่งเป็น Mutable และมีเมธอด Remove() สำหรับลบตัวอักษรที่ตำแหน่งที่กำหนด
วิธีการ
- สร้าง
StringBuilderจากสตริงต้นฉบับ - ใช้
Remove(startIndex, length)ลบตัวอักษร - แปลงกลับเป็นสตริงด้วย
ToString()
ตัวอย่าง: ลบตัวอักษรตำแหน่งที่ 4 (Index 3)
using System;
using System.Text;
public class Demo
{
public static void Main(string[] args)
{
string str1 = "Amit";
Console.WriteLine("สตริงต้นฉบับ: " + str1);
StringBuilder strBuilder = new StringBuilder(str1);
strBuilder.Remove(3, 1); // ลบ 1 ตัวอักษร ตั้งแต่ Index 3
str1 = strBuilder.ToString();
Console.WriteLine("สตริงหลังลบตัวอักษร: " + str1);
}
}
ผลลัพธ์
สตริงต้นฉบับ: Amit สตริงหลังลบตัวอักษร: Ami
คำอธิบายเพิ่มเติม
Remove(int startIndex, int length)- ลบlengthตัวอักษร เริ่มจากstartIndexStringBuilderมีเมธอดอื่นๆ ที่มีประโยชน์:Insert(),Replace(),Append()- สำหรับการลบหลายตำแหน่ง ควรลบจากท้ายไปหัว (Index สูงไปต่ำ) เพื่อไม่ให้ดัชนีเปลี่ยนไป
ทางเลือกอื่น: ใช้ LINQ หรือ String.Concat กรณีไม่ต้องการ StringBuilder:
string result = new string(str.Where((c, i) => i != indexToRemove).ToArray());