如何在 Rust 中计算字符串中唯一的字素簇?

2023-12-31

例如,对于

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

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

4

我们可以使用graphemes方法来自unicode 分段箱 https://crates.io/crates/unicode-segmentation迭代字素簇并将它们保存在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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Rust 中计算字符串中唯一的字素簇? 的相关文章

随机推荐