2 votes

Comment convertir une chaîne à un seul caractère en un char ?

Ce problème semble trivial mais je ne trouve pas de réponse. En supposant que letter est une chaîne de caractères unique, comment puis-je convertir une lettre en un caractère ?

let mut letter = String::new();

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

3voto

Abdul Niyas P M Points 2031

Une solution consiste à utiliser chars méthode . Ceci renvoie un itérateur sur les char d'une tranche de chaîne.

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

Mais c'est Il est important de se rappeler que

char représente une valeur scalaire Unicode et peut ne pas correspondre à votre idée. de ce qu'est un "caractère". L'itération sur des grappes de graphèmes peut être ce que ce que vous voulez réellement. Par exemple, considérons la chaîne H

let y = "H";

let mut chars = y.chars();

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

Considérons maintenant "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());

Voir aussi :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X