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

Gre*_*olm 20 string rust rust-0.9

我一直在研究如何在Rust中将字符串转换为大写字母.到目前为止我发现的最佳方式是:

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

是否有一个不那么冗长的方法呢?

注意:此问题专门针对Rust 0.9.在询问时还有另一个相关的答案,但它适用于Rust 0.8,它具有显着的语法差异,因此不适用.

Cod*_*fel 19

如果您使用的是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};
}
Run Code Online (Sandbox Code Playgroud)


Dan*_*ath 11

我认为推荐的方法是使用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());
}
Run Code Online (Sandbox Code Playgroud)

  • 您实际上在这个示例中使用了 [`str::to_ascii_uppercase`](https://doc.rust-lang.org/std/primitive.str.html#method.to_ascii_uppercase),但同样的事情。 (3认同)

Con*_*yer 7

在 Rust 1.2.0 中,str::to_uppercase()添加了。

fn main() {
    let s = "smash";
    println!("Hulk {}", s.to_uppercase());
}
Run Code Online (Sandbox Code Playgroud)