2014-02-10 1 views
10

Я искал, как вы конвертируете строку в верхний регистр в 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, который имеет значительные различия в синтаксисе и поэтому неприменим.

ответ

5

Я думаю, что самый простой способ сделать это, как это с 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()); 
} 
+0

Не работает из коробки, потому что to_upper() - это метод std :: ascii, а не str. Если это сработает для вас, может быть, вы используете черту, которая дает вам этот метод? –

+0

Вы пробовали новую версию. Старый был написан на компах без ржавчины. –

+0

Да, это работает! Хотя это в основном то же самое решение, обсуждаемое в другом ответе. –

9

Если вы используете 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}; 
} 
Смежные вопросы