Rust:
การลบตัวอักษรที่ตรงกับรูปแบบ
วิธีการ:
ใน Rust, เราสามารถใช้เมธอด replace
จากประเภท String
หรือ regex สำหรับรูปแบบที่ซับซ้อนมากขึ้น. นี่คือวิธีการทำ:
fn main() {
let phrase = "Hello, _world_! -- Programming in Rust --".to_string();
// แทนที่ขีดล่างด้วยไม่มีอะไร
let cleaned = phrase.replace("_", "");
println!("{}", cleaned);
// ใช้ regex สำหรับรูปแบบที่ซับซ้อนมากขึ้น (อย่าลืมเพิ่ม regex crate ไปยัง Cargo.toml)
let regex = regex::Regex::new(r"--.*?--").unwrap();
let s = regex.replace_all(&cleaned, "");
println!("{}", s);
}
// ผลลัพธ์:
// Hello, world! -- Programming in Rust --
// Hello, world!
ลงลึก
การลบอักขระที่ตรงกับรูปแบบไม่ได้จำกัดอยู่ที่ Rust เท่านั้น; เป็นการทำงานทั่วไปในหลายภาษาการเขียนโปรแกรม. ในอดีต, เครื่องมือเช่น sed
ใน Unix ถูกใช้ในการแปลงข้อความได้อย่างมีประสิทธิภาพ, และตอนนี้ภาษาต่างๆ จัดหาฟังก์ชันในตัวสำหรับการจัดการสตริง.
ใน Rust, วิธีการมาตรฐานคือการใช้ replace
สำหรับรูปแบบคงที่ง่ายๆ. สำหรับไวลด์การ์ด, การซ้ำ, หรือการลบที่มีเงื่อนไข, เราหันไปใช้ regex. แพ็กเกจ regex เป็นเครื่องมือที่ใช้กันอย่างแพร่หลายสำหรับเรื่องนี้, แต่จำไว้ว่า, การดำเนินการของ regex มีค่าใช้จ่ายสูงในแง่ของประสิทธิภาพ, ดังนั้นใช้มันอย่างมีวิจารณญาณ.
การรับประกันความปลอดภัยของ Rust ยังขยายไปถึงการประมวลผลข้อความ. ขณะที่ในภาษาบางภาษาการจัดการสตริงอาจเป็นแหล่งของช่องโหว่ด้านความปลอดภัย เช่น buffer overflows, การออกแบบของ Rust ช่วยป้องกันปัญหาดังกล่าว.
ดูเพิ่มเติม
- คู่มือ
String
ของ Rust: https://doc.rust-lang.org/std/string/struct.String.html - คู่มือแพ็กเกจ
regex
: https://docs.rs/regex/ - หนังสือ Rust Regex: https://rust-lang-nursery.github.io/regex/