Rust 将字符转换为大写
我有一个变量,它包含一个Rust 将字符转换为大写,rust,Rust,我有一个变量,它包含一个char。我想把这个char转换成大写。但是,to_uppercase函数返回一个rustc_unicode::char::ToUppercase结构,而不是charToUppercase是一个迭代器,因为字符的大写版本可能由多个代码点组成,正如delnan在注释中指出的那样。您可以将其转换为字符向量: c.to_uppercase().collect::<Vec<_>>(); c.to_大写().collect::(); 然后,您应该将这些字
char
。我想把这个char
转换成大写。但是,to_uppercase
函数返回一个rustc_unicode::char::ToUppercase
结构,而不是char
ToUppercase
是一个迭代器,因为字符的大写版本可能由多个代码点组成,正如delnan在注释中指出的那样。您可以将其转换为字符向量:
c.to_uppercase().collect::<Vec<_>>();
c.to_大写().collect::();
然后,您应该将这些字符收集到一个字符串中,正如ker所指出的那样。解释
ToUppercase
是一个迭代器
,它可以生成多个char
。这是必要的,因为某些Unicode字符由多个“Unicode标量值”(一个字符表示多个“Unicode标量值”)
一个很好的例子就是所谓的。试试这个例子():
让fi_upper:Vec='fi'。to_uppercase().collect();
普林顿!(“{:?}”,fi_上);//印刷品:['F','I']
“fi”连字是单个字符,其大写版本由两个字母/字符组成
解决方案 如何处理这一问题有多种可能性:
&str
:如果数据实际上是字符串形式,请使用它返回一个更易于处理的字符串
字符。但它只将字母'a'
更改为'z'
,并忽略所有其他字符李>
手动处理它:收集到一个字符串
或Vec
中,如上例所示李>
然后你只需要取向量的第一个字符:对于这样一件小事来说,这不是很夸张吗?不,我的答案是错误的。请阅读评论。这在某些情况下是可行的,但在一般情况下是不正确的。@LukasKalbertodt我自己无法回答这个问题。我还没有删除答案,因为评论包含有效信息。我应该删除它吗?@LukasKalbertodt:刚刚删除了。谢谢
let fi_upper: Vec<_> = 'fi'.to_uppercase().collect();
println!("{:?}", fi_upper); // prints: ['F', 'I']