在Rust中,将字符串转换为大写的最简单方法是什么?

54

我一直在研究如何将字符串转换为大写字母的Rust代码。目前我找到的最优解是:

let s = "smash";
let asc = s.to_ascii().to_upper();
println!("Hulk {:s}", asc.as_str_ascii());

有没有更简洁的方法来做这件事?

注意: 这个问题特别针对 Rust 0.9,虽然在提问时还有另一个相关回答可用,但它是针对具有重大语法差异的 Rust 0.8,因此不适用。

3个回答

58

如果您使用std::string::String类型而不是&str,则有一种更简洁的方法,并且还带有Unicode支持的额外好处:

fn main() {
    let test_str = "übercode"; // type &str

    let uppercase_test_string = test_str.to_uppercase(); // type String

    let uppercase_test_str = uppercase_test_string.as_str(); // back to type &str

    println!{"{}", test_str};
    println!{"{}", uppercase_test_string};
    println!{"{}", uppercase_test_str};
}

21

我认为推荐的方法是使用String::to_ascii_uppercase

fn main() {
    let r = "smash".to_ascii_uppercase();
    println!("Hulk {}!", r); // Hulk SMASH!

    //or one liner
    println!("Hulk {}!", "smash".to_ascii_uppercase());
}

3
在这个例子中,您实际上使用了str::to_ascii_uppercase,但是效果相同。 - Timmmm

5
在Rust 1.2.0版本中,添加了 str::to_uppercase() 方法。
fn main() {
    let s = "smash";
    println!("Hulk {}", s.to_uppercase());
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接