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

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

วิธีการ:

ใน Go การลบอักขระที่ตรงกับรูปแบบสามารถทำได้อย่างมีประสิทธิภาพโดยใช้แพคเกจ regexp ที่นี่ เราจะแสดงวิธีการลบตัวเลขทั้งหมด แล้วก็ลบอักขระที่ไม่ใช่ตัวเลขและตัวอักษรจากสตริงเป็นตัวอย่าง

  1. การลบตัวเลขทั้งหมด:
package main

import (
    "fmt"
    "regexp"
)

func main() {
    text := "Go1 น่าสนใจ แต่ Go2 จะน่าสนใจยิ่งกว่า! ตอนนี้: 2023."
	
    // Compile the regular expression for digits
    re, err := regexp.Compile("[0-9]+")
    if err != nil {
        fmt.Println("พบข้อผิดพลาดในการรวบรวม regex:", err)
        return
    }
	
    // Replace digits with an empty string
    result := re.ReplaceAllString(text, "")
	
    fmt.Println(result) // Output: Go น่าสนใจ แต่ Go จะน่าสนใจยิ่งกว่า! ตอนนี้: .
}
  1. การลบอักขระที่ไม่ใช่ตัวเลขและตัวอักษรทั้งหมด:
package main

import (
    "fmt"
    "regexp"
)

func main() {
    text := "Go เป็นอันดับ #1 @ ในภาษาการเขียนโปรแกรม!"
	
    // Compile the regular expression for non-alphanumeric characters
    re, err := regexp.Compile("[^a-zA-Z0-9]+")
    if err != nil {
        fmt.Println("พบข้อผิดพลาดในการรวบรวม regex:", err)
        return
    }
	
    // Replace non-alphanumeric characters with an empty string
    result := re.ReplaceAllString(text, "")
	
    fmt.Println(result) // Output: Goเป็นอันดับ1ในภาษาการเขียนโปรแกรม
}

ลงลึก

แพคเกจ regexp ใน Go ให้การทำงานกับการจับคู่และจัดการรูปแบบด้วย regular expressions ได้แบบทรงพลัง การดำเนินการนี้ได้รับการพัฒนามาจาก RE2, ห้องสมุดการแสดงออกแบบปกติที่ออกแบบมาเพื่อรับประกันเวลาการดำเนินการแบบเชิงเส้น หลีกเลี่ยงปัญหา “catastrophic backtracking” ที่มีอยู่ในเอ็นจิน regex อื่น ๆ นี่ทำให้ regex ของ Go ค่อนข้างปลอดภัยและมีประสิทธิภาพสำหรับการใช้งานที่หลากหลาย

แม้ว่าแพคเกจ regexp จะเป็นวิธีการที่ครบถ้วนสำหรับการจัดการกับรูปแบบแล้ว ก็ควรที่จะทราบว่าสำหรับการจัดการสตริงที่ง่ายกว่าหรือที่เฉพาะเจาะจงมาก ฟังก์ชันสตริงอื่น ๆ เช่น strings.Replace(), strings.Trim(), หรือการใช้ slice อาจเสนอทางเลือกที่มีประสิทธิภาพมากกว่า Regular expressions เป็นเครื่องมือที่ทรงพลัง แต่ค่าใช้จ่ายทางการคำนวณที่ค่อนข้างสูงหมายความว่าสำหรับการดำเนินการที่สามารถระบุได้โดยไม่ต้องใช้พวกเขา การสำรวจทางเลือกในไลบรารีมาตรฐานบางครั้งอาจนำไปสู่โค้ดที่ง่ายและมีประสิทธิภาพมากกว่า