#unicode #character #grapheme #unicode-characters #text

unicode_clusters

此包提供了变量宽度的 Unicode 字符作为单个项目,允许进行类似数组的索引等操作。

3 个版本

0.1.2 2021 年 12 月 9 日
0.1.1 2021 年 12 月 9 日
0.1.0 2021 年 12 月 9 日

#1814文本处理

MIT 许可证

8KB
182

Unicode Clusters

Unicode Clusters 是一个库,它支持将可变宽度的 Unicode 字符作为单个项目处理,允许进行类似数组的索引等操作。

#[test]
fn example() {
	let input = "AȜनमस्ते";

	let gcs = GraphemeCluster::graphemes(input);
	assert!(gcs.len() == 6, "length");

	assert_eq!(gcs[0].as_string(), "A");

	assert_eq!(gcs[1].as_string(), "Ȝ");
	assert_eq!(gcs[2].as_string(), "");
	assert_eq!(gcs[3].as_string(), "");
	assert_eq!(gcs[4].as_string(), "स्");
	assert_eq!(gcs[5].as_string(), "ते");

	assert_eq!(gcs[0].as_bytes()[..], [65]);
	assert_eq!(gcs[1].as_bytes()[..], [200, 156]);
	assert_eq!(gcs[2].as_bytes()[..], [224, 164, 168]);
	assert_eq!(gcs[3].as_bytes()[..], [224, 164, 174]);
	assert_eq!(gcs[4].as_bytes()[..], [224, 164, 184,	224, 165, 141]);
	assert_eq!(gcs[5].as_bytes()[..], [224, 164, 164,	224, 165, 135]);
}

依赖项

~550KB