6 votes

Comment compter les groupes de graphèmes uniques dans une chaîne de caractères en Rust ?

Par exemple, pour

let n = count_unique_grapheme_clusters("    ");
println!("{}", n);

la sortie attendue est (espace et trois drapeaux : " " , "" , "" , "" ) :

4

9voto

ozkriff Points 749

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);
}

Terrain de jeux

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