Go:
การลบตัวอักษรที่ตรงกับรูปแบบ
วิธีการ:
ใน Go การลบอักขระที่ตรงกับรูปแบบสามารถทำได้อย่างมีประสิทธิภาพโดยใช้แพคเกจ regexp
ที่นี่ เราจะแสดงวิธีการลบตัวเลขทั้งหมด แล้วก็ลบอักขระที่ไม่ใช่ตัวเลขและตัวอักษรจากสตริงเป็นตัวอย่าง
- การลบตัวเลขทั้งหมด:
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 จะน่าสนใจยิ่งกว่า! ตอนนี้: .
}
- การลบอักขระที่ไม่ใช่ตัวเลขและตัวอักษรทั้งหมด:
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 เป็นเครื่องมือที่ทรงพลัง แต่ค่าใช้จ่ายทางการคำนวณที่ค่อนข้างสูงหมายความว่าสำหรับการดำเนินการที่สามารถระบุได้โดยไม่ต้องใช้พวกเขา การสำรวจทางเลือกในไลบรารีมาตรฐานบางครั้งอาจนำไปสู่โค้ดที่ง่ายและมีประสิทธิภาพมากกว่า