gpt4 book ai didi

unicode - 如何迭代 Rust 中的 Unicode 字素簇?

转载 作者:行者123 更新时间:2023-11-29 08:04:28 28 4
gpt4 key购买 nike

我正在学习 Rust,令我惊讶的是 Rust 只能区分 UTF-8 字节序列,但不能区分实际的字素簇(即变音符号被视为不同的“字符”)。

因此,例如,Rust 可以将输入文本转换为这样的向量(在 "नमस्ते".chars() 的帮助下):

['न', 'म', 'स', '्', 'त', 'े'] // 4 and 6 are diacritics and shouldn't be distinct items

但是我如何获得这样的向量呢?

["न", "म", "स्", "ते"]

最佳答案

您想使用 the unicode-segmentation crate :

use unicode_segmentation::UnicodeSegmentation; // 1.5.0

fn main() {
for g in "नमस्ते्".graphemes(true) {
println!("- {}", g);
}
}

( Playground ,注意:playground 编辑器无法正确处理字符串,所以光标位置在这一行中是错误的)

这打印:

- न
- म
- स्
- ते्

作为参数的 true 意味着我们要迭代扩展的字素簇。参见 graphemes documentation获取更多信息。


标准库在某些时候支持分割成 Unicode 字素簇,但不幸的是 deprecated然后 removed由于所需 Unicode 表的大小。相反,事实上的解决方案是使用 crate 。但是,是的,我认为“默认标准库分段”使用的代码点在语义上没有多大意义(即计算它们或将它们拆分通常没有意义),这真的很不幸。

关于unicode - 如何迭代 Rust 中的 Unicode 字素簇?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58770462/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com