5 个版本 (3 个稳定版)
1.0.2 | 2021年11月19日 |
---|---|
1.0.1 | 2020年6月24日 |
1.0.0 | 2019年6月14日 |
0.1.1 | 2018年2月7日 |
0.1.0 | 2016年9月20日 |
#864 在 文本处理
每月下载量821
在 14 个crate中使用(9 个直接使用)
20KB
243 行
unicode_reader
包装字节读取器并提供以 Unicode 代码点或字符群形式输出的适配器。
与其它以字符串为工作对象的 Unicode 解析器(例如,unicode_segmentation,此项目基于此构建)不同,这个crate在流上工作,不需要将整个数据读入内存。相反,它在读取的同时输出字符或代码点。
extern crate unicode_reader;
use unicode_reader::Graphemes;
use std::io::Cursor;
fn main() {
let input = Cursor::new("He\u{302}\u{320}llo");
let mut graphemes = Graphemes::from(input);
assert_eq!("H", graphemes.next().unwrap().unwrap());
assert_eq!("e\u{302}\u{320}", graphemes.next().unwrap().unwrap()); // note 3 characters
assert_eq!("l", graphemes.next().unwrap().unwrap());
assert_eq!("l", graphemes.next().unwrap().unwrap());
assert_eq!("o", graphemes.next().unwrap().unwrap());
assert!(graphemes.next().is_none());
let greek_bytes = vec![0xCE, 0xA7, 0xCE, 0xB1, 0xCE, 0xAF, 0xCF, 0x81, 0xCE, 0xB5,
0xCF, 0x84, 0xCE, 0xB5];
let mut codepoints = CodePoints::from(Cursor::new(greek_bytes));
assert_eq!(vec!['Χ', 'α', 'ί', 'ρ', 'ε', 'τ', 'ε'],
codepoints.map(|r| r.unwrap())
.collect::<Vec<char>>());
}
依赖项
~625KB