Fjerne anførselstegn fra en streng

Rust:
Fjerne anførselstegn fra en streng

Hvordan:

fn remove_quotes(s: &str) -> String {
    s.trim_matches(|c| c == '\"' || c == '\'').to_string()
}

fn main() {
    let quoted_str = "\"Hei, Rustaceans!\"";
    let cleaned_str = remove_quotes(quoted_str);
    println!("{}", cleaned_str);
    // Utdata: Hei, Rustaceans!
}

Noen ganger har du en streng med blandete anførselstegn, slik som dette:

fn main() {
    let mixed_quoted = "'Rust sier: \"Hallo, Verden!\"'";
    let cleaned_str = remove_quotes(mixed_quoted);
    println!("{}", cleaned_str);
    // Utdata: Rust sier: "Hallo, Verden!"
}

Her fjernes bare de ytterste enkle anførselstegnene.

Dypdykk

Når du fjerner anførselstegn fra en streng, lurer du kanskje på hvorfor det ikke er bare en enkel .replace("\"", ""). Tidligere var tekstbehandling mindre standardisert, og ulike systemer hadde forskjellige måter å lagre og overføre tekst på, ofte med en slags ’escape-sekvens’ for spesielle tegn. Rusts trim_matches-metode er mer allsidig, og lar deg spesifisere flere tegn å trimme, og om du skal trimme fra starten (prefiks), slutten (suffiks), eller begge sider av strengen.

Det finnes alternativer, selvfølgelig. Regex er en kraftpakke for strengmanipulering, i stand til å matche komplekse mønstre, og ville være for mye for bare å fjerne anførselstegn. Biblioteker som trim_in_place kunne tilby trimming på stedet uten overheaden av å skape et nytt String-objekt, noe som kan være ønskelig for applikasjoner der ytelse er kritisk.

Under panseret itererer trim_matches faktisk gjennom strengens tegn fra begge ender og sjekker mot det angitte mønsteret til et ikke-samsvarerende tegn er funnet. Det er effektivt for det den gjør, men vær alltid klar over at den jobber med Unicode-skalare verdier. Hvis strengen din kan inneholde flerbyte Unicode-tegn, trenger du ikke å bekymre deg for at den bryter dem opp.

Se Også