如何将单个字符串转换为字符?

Nat*_*vis 4 rust

这个问题看似微不足道,但我找不到答案。假设这letter是一个单个字符串,我如何将字母转换为字符?

let mut letter = String::new();

io::stdin()
    .read_line(&mut letter)
    .expect("Failed to read line");
Run Code Online (Sandbox Code Playgroud)

Abd*_*P M 5

一种解决方案是使用charsmethod。这将返回char一个字符串切片 s 上的迭代器。

\n
let letter_as_char: char = letter.chars().next().unwrap();\nprintln!("{:?}", letter_as_char);\n
Run Code Online (Sandbox Code Playgroud)\n

但重要的是要记住

\n
\n

char表示 Unicode 标量值,可能与您对 \xe2\x80\x98 字符\xe2\x80\x99 的想法不符。对字素簇的迭代可能是\n您真正想要的。例如,考虑字符串H

\n
let y = "H";\n\nlet mut chars = y.chars();\n\nassert_eq!(Some(\'H\'), chars.next());   \nassert_eq!(None, chars.next());\n
Run Code Online (Sandbox Code Playgroud)\n

现在考虑"y\xcc\x86"

\n
let y = "y\xcc\x86";\n\nlet mut chars = y.chars();\n\nassert_eq!(Some(\'y\'), chars.next()); // not \'y\xcc\x86\'\nassert_eq!(Some(\'\\u{0306}\'), chars.next());\n\nassert_eq!(None, chars.next());\n
Run Code Online (Sandbox Code Playgroud)\n
\n

也可以看看:

\n\n