Nur*_*yev 2 unicode utf-8 rust
我正在学习Rust,而让我感到惊讶的是,Rust仅能够区分UTF-8字节序列,而不能区分实际的字素簇(即,变音符号被视为不同的“字符”)。
因此,例如,Rust可以将输入文本变成这样的矢量(借助于"??????".chars()):
['?', '?', '?', '?', '?', '?'] // 4 and 6 are diacritics and shouldn't be distinct items
Run Code Online (Sandbox Code Playgroud)
但是,如何获得这样的向量?
["?", "?", "??", "??"]
Run Code Online (Sandbox Code Playgroud)
use unicode_segmentation::UnicodeSegmentation; // 1.5.0
fn main() {
for g in "???????".graphemes(true) {
println!("- {}", g);
}
}
Run Code Online (Sandbox Code Playgroud)
(Playground,请注意:Playground编辑器无法正确处理字符串,因此该行中的光标位置错误)
打印:
- ?
- ?
- ??
- ???
Run Code Online (Sandbox Code Playgroud)
在true作为参数意味着我们要遍历扩展字形集群。请参阅graphemes文档以获取更多信息。
标准库在某些时候支持对Unicode字素簇的分段,但是不幸的是,由于所需的Unicode表的大小而将其删除。相反,实际解决方案是使用板条箱。但是,是的,我认为“默认标准库分段”所使用的代码点在语义上没有多大意义(例如,对它们进行计数或将其拆分通常没有任何意义),这确实是很不幸的。
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |