การลบตัวอักษรที่ตรงกับรูปแบบ

Visual Basic for Applications:
การลบตัวอักษรที่ตรงกับรูปแบบ

วิธีการ:

ใน VBA คุณสามารถใช้ฟังก์ชัน Replace หรือ regular expressions ในการลบอักขระที่ตรงกับรูปแบบ ต่อไปนี้คือตัวอย่างของทั้งสองวิธี:

การใช้ฟังก์ชัน Replace

ฟังก์ชัน Replace เป็นวิธีที่ตรงไปตรงมาสำหรับการลบอักขระหรือลำดับเฉพาะ

Sub DeleteSpecificChars()
    Dim originalString As String
    originalString = "123-ABC-456-XYZ"
    
    ' การลบขีดกลาง
    Dim resultString As String
    resultString = Replace(originalString, "-", "")
    
    Debug.Print originalString ' ก่อน: 123-ABC-456-XYZ
    Debug.Print resultString ' หลัง: 123ABC456XYZ
End Sub

การใช้ Regular Expressions

สำหรับรูปแบบที่ซับซ้อนยิ่งขึ้น regular expressions เป็นทางเลือกที่ทรงพลัง

ก่อนอื่น ให้เปิดใช้งาน Microsoft VBScript Regular Expressions library ผ่าน Tools > References ใน Visual Basic Editor

Sub DeletePatternChars()
    Dim regEx As Object
    Set regEx = CreateObject("VBScript.RegExp")
    
    Dim strPattern As String
    strPattern = "\d" ' รูปแบบเพื่อจับคู่ตัวเลขทั้งหมด
    
    With regEx
        .Global = True
        .IgnoreCase = True
        .Pattern = strPattern
    End With
    
    Dim originalString As String
    originalString = "Remove 123 and 456"
    
    ' การใช้วิธีการ Replace เพื่อลบการจับคู่
    Dim resultString As String
    resultString = regEx.Replace(originalString, "")
    
    Debug.Print originalString ' ก่อน: Remove 123 and 456
    Debug.Print resultString ' หลัง: Remove  and 
End Sub

ลงลึก

ตามประวัติศาสตร์ การจับคู่รูปแบบและการแก้ไขสตริงใน VBA มีความจำกัดอย่างมาก เมื่อเปรียบเทียบกับภาษาโปรแกรมมิ่งสมัยใหม่ที่เสนอไลบรารีมาตรฐานจำนวนมากสำหรับงานเหล่านี้ ฟังก์ชัน Replace เรียบง่ายและมีประสิทธิภาพสำหรับการแทนที่โดยตรง แต่ขาดความยืดหยุ่นสำหรับการจับคู่รูปแบบที่ซับซ้อนยิ่งขึ้น นี่คือที่มาของ regular expressions (RegEx) ซึ่งมีไวยากรณ์ที่ซับซ้อนขึ้นสำหรับการจับคู่รูปแบบและการแก้ไขสตริง อย่างไรก็ตาม การทำงานกับ RegEx ใน VBA ต้องการการตั้งค่าเพิ่มเติม เช่น การเปิดใช้งานการอ้างอิง Microsoft VBScript Regular Expressions ซึ่งอาจเป็นอุปสรรคสำหรับผู้ใช้ใหม่

แม้จะมีข้อจำกัดเหล่านี้ การแนะนำการสนับสนุน RegEx ใน VBA เป็นก้าวกระโดดที่สำคัญ ให้เครื่องมือที่ทรงพลังยิ่งขึ้นสำหรับโปรแกรมเมอร์ที่ทำงานกับการประมวลผลข้อความ ในสถานการณ์ที่ซับซ้อนยิ่งขึ้นที่ฟังก์ชันสตริงในตัวล้มเหลว regular expressions ให้ตัวเลือกที่หลากหลายและทรงพลัง

ควรทราบว่า สำหรับผู้ที่ทำงานในสภาพแวดล้อมหรือโครงการที่ประสิทธิภาพเป็นสิ่งสำคัญ การใช้ไลบรารีภายนอกหรือการรวมกับภาษาโปรแกรมมิ่งอื่นอาจให้ประสิทธิภาพที่ดีขึ้นและคุณสมบัติมากขึ้น อย่างไรก็ตาม สำหรับงานประจำวันหลายๆ งานใน VBA เมธอดเหล่านี้ยังคงเป็นตัวเลือกที่ปฏิบัติได้และเข้าถึงได้