Rust:
การลบเครื่องหมายอัญประกาศออกจากสตริง
วิธีการ:
fn remove_quotes(s: &str) -> String {
s.trim_matches(|c| c == '\"' || c == '\'').to_string()
}
fn main() {
let quoted_str = "\"Hello, Rustaceans!\"";
let cleaned_str = remove_quotes(quoted_str);
println!("{}", cleaned_str);
// ผลลัพธ์: Hello, Rustaceans!
}
บางครั้งคุณอาจมีสตริงที่มีเครื่องหมายอ้างอิงผสมกัน เช่นนี้:
fn main() {
let mixed_quoted = "'Rust says: \"Hello, World!\"'";
let cleaned_str = remove_quotes(mixed_quoted);
println!("{}", cleaned_str);
// ผลลัพธ์: Rust says: "Hello, World!"
}
ที่นี่ เพียงแต่เครื่องหมายอ้างอิงด้านนอกสุดเท่านั้นที่ถูกลบออก
ลงลึก
เมื่อลบเครื่องหมายอ้างอิงจากสตริง คุณอาจสงสัยว่าทำไมมันถึงไม่ใช่เพียงแค่การใช้ .replace("\"", "")
เท่านั้น เนื่องจากในช่วงเริ่มต้นการจัดการข้อมูลข้อความน้อยที่มีมาตรฐานน้อย และระบบต่างๆ มีวิธีการจัดเก็บและส่งข้อมูลข้อความที่แตกต่างกัน บ่อยครั้งมีบางอย่างเช่น ‘ลำดับการหลบหลีก’ สำหรับอักขระพิเศษ วิธี trim_matches
ของ Rust มีความเฉพาะเจาะจงยิ่งขึ้น อนุญาตให้คุณระบุอักขระหลายชนิดที่ต้องการตัดออก และว่าจะตัดจากต้น (prefix) ตอนจบ (suffix) หรือทั้งสองข้างของสตริง
มีทางเลือกอื่นอยู่ แน่นอน Regex เป็นตัวเลือกทรงพลังสำหรับการจัดการสตริง สามารถจับคู่รูปแบบที่ซับซ้อนได้ และจะเกินไปสำหรับการเพียงแค่ลบเครื่องหมายอ้างอิง Libraries เช่น trim_in_place
อาจเสนอการตัดอักขระโดยไม่มี overhead ของการสร้างออบเจค String
ใหม่ ซึ่งอาจเป็นที่ต้องการสำหรับแอปพลิเคชันที่ต้องการประสิทธิภาพสูง
ภายใต้การทำงานของ trim_matches
จริงๆ แล้วมันจะทำการไปรเวทผ่านอักขระในสตริงจากทั้งสองด้าน ตรวจสอบกับรูปแบบที่ระบุจนกว่าจะพบอักขระที่ไม่ตรงกัน มันมีประสิทธิภาพสำหรับสิ่งที่มันทำ แต่ต้องระวังเสมอว่ามันทำงานกับค่าสเกลาร์ Unicode หากสตริงของคุณอาจมีอักขระ Unicode หลายไบต์ คุณไม่ต้องกังวลเกี่ยวกับมันที่จะแยกมันออกมา
ดูเพิ่มเติม
- เอกสารของ Rust เกี่ยวกับการจัดการสตริง: https://doc.rust-lang.org/book/ch08-02-strings.html
- คลัง
regex
สำหรับรูปแบบที่ซับซ้อน: https://crates.io/crates/regex - Rust by Example สำหรับเหตุการณ์การเขียนโค้ดจริง: https://doc.rust-lang.org/stable/rust-by-example/std/str.html