我有一个以CSV格式存在的文件,它的第一列数据表示商品代码,可选末尾是 "UNIUNI"
或大小写混合的这些字符,通过条形码读取器载入。我需要去除最后的"UNI"
。
我写了这个函数:
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()
}
理想的函数签名应该像这样:
fn read_csv_rilev(mut s: &String)
但是对一个 String
进行就地操作可能不是一个好主意。实际上,在 Rust 标准库中没有任何除 String::pop()
之外的方法可以这样做。
.trim_right_matches()
在 Rust 1.2 中将会稳定。 - bluss.trim_right()
可以让您在不使用.to_string()
的情况下完成此操作。只需使用修剪后的字符串的长度来进行截断即可。 - bluss