【问题标题】:How do I count unique grapheme clusters in a string in Rust?如何在 Rust 中计算字符串中唯一的字素簇?
【发布时间】:2018-08-13 08:50:57
【问题描述】:

例如,对于

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

预期的输出是(空格和三个标志:" ""????????""????????""????????"):

4

【问题讨论】:

    标签: unicode rust


    【解决方案1】:

    我们可以使用unicode-segmentation crate 中的graphemes 方法迭代字素簇并将它们保存在HashSet<&str> 中以过滤掉重复项。然后我们得到容器的.len()

    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("??é"), 2);
        assert_eq!(count_unique_grapheme_clusters("??????????"), 3);
    }
    

    Playground

    【讨论】:

    • 如果您想回答自己的问题,可以勾选提问页面底部的Answer your own question复选框,这样您就可以一次写出您的问题和答案。
    猜你喜欢
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    相关资源
    最近更新 更多