Par exemple, pour
let n = count_unique_grapheme_clusters(" ");
println!("{}", n);
la sortie attendue est (espace et trois drapeaux : " "
, ""
, ""
, ""
) :
4
Par exemple, pour
let n = count_unique_grapheme_clusters(" ");
println!("{}", n);
la sortie attendue est (espace et trois drapeaux : " "
, ""
, ""
, ""
) :
4
Nous pouvons utiliser le graphemes
méthode de caisse de segmentation unicode pour itérer sur les groupes de graphèmes et les sauvegarder dans un fichier HashSet<&str>
pour filtrer les doublons. Ensuite, nous obtenons le .len()
du conteneur.
extern crate unicode_segmentation; // 1.2.1
use std::collections::HashSet;
use unicode_segmentation::UnicodeSegmentation;
fn count_unique_grapheme_clusters(s: &str) -> usize {
let is_extended = true;
s.graphemes(is_extended).collect::<HashSet<_>>().len()
}
fn main() {
assert_eq!(count_unique_grapheme_clusters(""), 0);
assert_eq!(count_unique_grapheme_clusters("a"), 1);
assert_eq!(count_unique_grapheme_clusters(""), 1);
assert_eq!(count_unique_grapheme_clusters("e"), 2);
assert_eq!(count_unique_grapheme_clusters(""), 3);
}
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.