การลบเครื่องหมายอัญประกาศออกจากสตริง

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 หลายไบต์ คุณไม่ต้องกังวลเกี่ยวกับมันที่จะแยกมันออกมา

ดูเพิ่มเติม