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

4
这个问题看起来很简单,但我找不到答案。假设letter是一个单字符的字符串,如何将letter转换为char类型?
let mut letter = String::new();

io::stdin()
    .read_line(&mut letter)
    .expect("Failed to read line");

1
如果您已经在使用itertoolsletter.chars().exactly_one().expect("not exactly one") - Caesar
1个回答

5

一种解决方案是使用chars方法。它返回一个迭代器,用于迭代字符串片段中的char

let letter_as_char: char = letter.chars().next().unwrap();
println!("{:?}", letter_as_char);

但是需要记住的是,这很重要


char represents a Unicode Scalar Value, and might not match your idea of what a ‘character’ is. Iteration over grapheme clusters may be what you actually want. For example, Consider the String H

let y = "H";

let mut chars = y.chars();

assert_eq!(Some('H'), chars.next());   
assert_eq!(None, chars.next());

Now consider "y̆"

let y = "y̆";

let mut chars = y.chars();

assert_eq!(Some('y'), chars.next()); // not 'y̆'
assert_eq!(Some('\u{0306}'), chars.next());

assert_eq!(None, chars.next());

另请参阅:


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