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

โปรแกรม C# ลบตัวอักษรที่ตำแหน่งที่ n จากสตริง

ใน C# สตริงเป็น Immutable (ไม่สามารถเปลี่ยนแปลงได้หลังสร้าง) เพื่อลบตัวอักษร ต้องใช้ StringBuilder ซึ่งเป็น Mutable และมีเมธอด Remove() สำหรับลบตัวอักษรที่ตำแหน่งที่กำหนด

วิธีการ

  1. สร้าง StringBuilder จากสตริงต้นฉบับ
  2. ใช้ Remove(startIndex, length) ลบตัวอักษร
  3. แปลงกลับเป็นสตริงด้วย 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 ตัวอักษร เริ่มจาก startIndex
  • StringBuilder มีเมธอดอื่นๆ ที่มีประโยชน์: Insert(), Replace(), Append()
  • สำหรับการลบหลายตำแหน่ง ควรลบจากท้ายไปหัว (Index สูงไปต่ำ) เพื่อไม่ให้ดัชนีเปลี่ยนไป

ทางเลือกอื่น: ใช้ LINQ หรือ String.Concat กรณีไม่ต้องการ StringBuilder:

string result = new string(str.Where((c, i) => i != indexToRemove).ToArray());