Tôi có tệp ở định dạng csv với cột dữ liệu đầu tiên đại diện cho mã mục tùy chọn kết thúc bằng "UNIUNI"
hoặc trường hợp hỗn hợp của các ký tự này, được nạp bằng đầu đọc mã vạch. Tôi cần cắt bỏ số "UNI"
s vừa qua.Cắt tỉa hiệu quả một chuỗi
Trong Rust Tôi cố gắng để viết thành công một phần là một chức năng cơ bản như thế này:
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()
}
Chữ ký chức năng lý tưởng trông giống như:
fn read_csv_rilev(mut s: &String) {/**/}
nhưng có lẽ một hành động tại chỗ trên một String không phải là một ý tưởng hay. Trong thực tế, trong thư viện chuẩn Rust không có gì để làm điều này, ngoại trừ String::pop()
.
Có cách nào để áp dụng trang trí trên Chuỗi không phải phân bổ một chuỗi khác không?
'.trim_right_matches() 'sẽ được ổn định ở Rust 1.2 – bluss
Và '.trim_right()', mà bạn có thể sử dụng để làm điều này mà không có '.to_string()'. Chỉ cần sử dụng độ dài của đường cắt để cắt ngắn. – bluss