Effizientes Trimmen eines Strings
Ich habe eine Datei im CSV-Format mit einer ersten Datenspalte, die den optional mit @ abgeschlossenen Artikelcode darstell"UNIUNI"
oder gemischte Schreibweise dieser Zeichen, geladen mit einem Barcode-Leser. Ich muss das letzte @ wegschneid"UNI"
s.
In Rust habe ich versucht, mit teilweisem Erfolg eine Funktion zu schreiben, die im Wesentlichen so aussieht:
fn main() {
// Ok: from "9846UNIUNI" to "9846"
println!("{}", read_csv_rilev("9846UNIUNI".to_string()));
// Wrong: from "9846uniuni" to "9846"
println!("{}", read_csv_rilev("9846uniuni".to_string()));
}
fn read_csv_rilev(code: String) -> String {
code
//.to_uppercase() /*Unstable feature in Rust 1.1*/
.trim_right_matches("UNI")
.to_string()
}
Die ideale Funktionssignatur sieht wie folgt aus:
fn read_csv_rilev(mut s: &String) {/**/}
Aber wahrscheinlich ist eine In-Place-Aktion für einen String keine gute Idee. Tatsächlich gibt es in der Rust-Standardbibliothek nichts zu tun, außerString::pop()
.
Gibt es eine Möglichkeit, das Trimmen auf einen String anzuwenden, ohne einen anderen zuzuweisen?