Каков самый простой способ преобразования строки в верхний регистр в Rust?
Я искал, как вы конвертируете строку в верхний регистр в Rust. Самый оптимальный способ, который я догадался до сих пор, заключается в следующем:
let s = "smash";
let asc = s.to_ascii().to_upper();
println!("Hulk {:s}", asc.as_str_ascii());
Есть ли менее верный способ сделать это?
Примечание: Этот вопрос специально настроен на Rust 0.9. На момент запроса был другой ответ, но он был для Rust 0.8, который имеет значительные различия в синтаксисе и поэтому неприменим.
Ответы
Ответ 1
Если вы используете тип std::string::String
вместо &str
, существует менее подробный способ. Дополнительное преимущество: поддержка Unicode и отсутствие необходимости импорта пакетов.
fn main() {
let test_str = "übercode"; // type &str
let test_string = test_str.to_string(); // type String
let uppercase_test_string = test_string.to_uppercase(); // type String
let uppercase_test_str = &*uppercase_test_string; // back to type &str
println!{"{}", test_str};
println!{"{}", uppercase_test_string};
println!{"{}", uppercase_test_str};
}
Ответ 2
Я думаю, что самый простой способ - сделать это с помощью std::ascii::AsciiExt
:
use std::ascii::AsciiExt;
fn main() {
let r = "smash".to_ascii_uppercase();
println!(" Hulk {:s}!", r); // Hulk SMASH!
//or one liner
println!(" Hulk {:s}!", "smash".to_ascii_uppercase());
}