3 个版本 (重大更新)
0.9.0 | 2019年3月3日 |
---|---|
0.8.0 | 2019年1月2日 |
0.7.0 | 2018年2月7日 |
#1376 在 文本处理
387,416 每月下载量
用于 745 个软件包 (8 个直接使用)
110KB
1.5K SLoC
UNIC — Unicode 文本分段算法
此 UNIC 组件实现了来自 Unicode® 标准附件 #29 - Unicode 文本分段 的算法,用于检测文本元素边界,如用户感知字符(即 Grapheme Clusters)、单词 和 句子(最后一个尚未实现)。
注意
此组件的初始代码基于 unicode-segmentation
。
lib.rs
:
UNIC — Unicode 文本分段算法
unic
的组件:为 Rust 提供的 Unicode 和国际化软件包。
此 UNIC 组件实现了来自 Unicode® 标准附件 #29 - Unicode 文本分段 的算法,用于检测文本元素边界,如用户感知字符(即 Grapheme Clusters)、单词 和 句子(最后一个尚未实现)。
示例
assert_eq!(
Graphemes::new("a\u{310}e\u{301}o\u{308}\u{332}").collect::<Vec<&str>>(),
&["a\u{310}", "e\u{301}", "o\u{308}\u{332}"]
);
assert_eq!(
Graphemes::new("a\r\nb🇺🇳🇮🇨").collect::<Vec<&str>>(),
&["a", "\r\n", "b", "🇺🇳", "🇮🇨"]
);
assert_eq!(
GraphemeIndices::new("a̐éö̲\r\n").collect::<Vec<(usize, &str)>>(),
&[(0, "a̐"), (3, "é"), (6, "ö̲"), (11, "\r\n")]
);
fn has_alphanumeric(s: &&str) -> bool {
s.chars().any(|ch| ch.is_alphanumeric())
}
assert_eq!(
Words::new(
"The quick (\"brown\") fox can't jump 32.3 feet, right?",
has_alphanumeric,
).collect::<Vec<&str>>(),
&["The", "quick", "brown", "fox", "can't", "jump", "32.3", "feet", "right"]
);
assert_eq!(
WordBounds::new("The quick (\"brown\") fox").collect::<Vec<&str>>(),
&["The", " ", "quick", " ", "(", "\"", "brown", "\"", ")", " ", " ", "fox"]
);
assert_eq!(
WordBoundIndices::new("Brr, it's 29.3°F!").collect::<Vec<(usize, &str)>>(),
&[
(0, "Brr"),
(3, ","),
(4, " "),
(5, "it's"),
(9, " "),
(10, "29.3"),
(14, "°"),
(16, "F"),
(17, "!")
]
);