Rust:
Xóa các ký tự phù hợp với một mẫu
Làm thế nào:
Trong Rust, chúng ta có thể sử dụng phương thức replace
từ kiểu String
hoặc regex cho các mẫu phức tạp hơn. Dưới đây là cách bạn làm:
fn main() {
let phrase = "Hello, _world_! -- Programming in Rust --".to_string();
// Thay thế gạch dưới bằng không
let cleaned = phrase.replace("_", "");
println!("{}", cleaned);
// Sử dụng regex cho các mẫu phức tạp hơn (nhớ thêm crate regex vào Cargo.toml)
let regex = regex::Regex::new(r"--.*?--").unwrap();
let s = regex.replace_all(&cleaned, "");
println!("{}", s);
}
// Đầu ra:
// Hello, world! -- Programming in Rust --
// Hello, world!
Sâu hơn nữa
Việc xóa các ký tự khớp với một mẫu không chỉ riêng gì Rust; đây là một hoạt động thông thường trong nhiều ngôn ngữ lập trình. Trong quá khứ, các công cụ như sed
trong Unix đã được sử dụng để biến đổi văn bản theo những cách mạnh mẽ, và bây giờ các ngôn ngữ cung cấp các hàm tích hợp sẵn cho việc thao tác chuỗi.
Trong Rust, cách tiếp cận tiêu chuẩn là sử dụng replace
cho các mẫu cố định đơn giản. Đối với các biểu tượng đại diện, lặp lại, hoặc loại bỏ có điều kiện, chúng ta sẽ chuyển sang regex. Crate regex là công cụ de facto cho việc này, nhưng nhớ rằng, các hoạt động regex tiêu tốn nhiều chi phí về hiệu suất, vì vậy hãy sử dụng chúng một cách thận trọng.
Các đảm bảo về sự an toàn của Rust cũng mở rộng đến việc xử lý văn bản. Trong khi ở một số ngôn ngữ, việc thao tác chuỗi có thể là nguồn gốc của các lỗ hổng bảo mật như tràn bộ đệm, thiết kế của Rust bảo vệ chống lại những vấn đề như vậy.
Xem thêm
- Tài liệu Rust
String
: https://doc.rust-lang.org/std/string/struct.String.html - Tài liệu crate
regex
: https://docs.rs/regex/ - Sách Rust Regex: https://rust-lang-nursery.github.io/regex/