Rust:
Удаление символов, соответствующих шаблону
Как:
В Rust мы можем использовать метод replace
из типа String
или регулярные выражения для более сложных шаблонов. Вот как это делается:
fn main() {
let phrase = "Hello, _world_! -- Programming in Rust --".to_string();
// Замена подчеркиваний на пустое место
let cleaned = phrase.replace("_", "");
println!("{}", cleaned);
// Использование регулярных выражений для более сложных шаблонов (не забудьте добавить crate regex в Cargo.toml)
let regex = regex::Regex::new(r"--.*?--").unwrap();
let s = regex.replace_all(&cleaned, "");
println!("{}", s);
}
// Вывод:
// Hello, world! -- Programming in Rust --
// Hello, world!
Погружение
Удаление символов, соответствующих определенному шаблону, не уникально для Rust; это общая операция во многих языках программирования. Исторически, инструменты вроде sed
в Unix использовались для мощного преобразования текста, и теперь языки предоставляют встроенные функции для манипуляций со строками.
В Rust стандартный подход заключается в использовании replace
для простых фиксированных шаблонов. Для подстановочных знаков, повторений или условного удаления мы обращаемся к регулярным выражениям. Crate regex
является фактически стандартным инструментом для этого, но помните, что операции с регулярными выражениями более затратны с точки зрения производительности, поэтому используйте их осмотрительно.
Гарантии безопасности Rust распространяются и на обработку текста. В то время как в некоторых языках манипуляции со строками могут стать источником уязвимостей безопасности, таких как переполнение буфера, дизайн Rust защищает от подобных проблем.
Смотрите также
- Документация Rust
String
: https://doc.rust-lang.org/std/string/struct.String.html - Документация crate
regex
: https://docs.rs/regex/ - Книга о регулярных выражениях Rust: https://rust-lang-nursery.github.io/regex/