11 个版本 (6 个稳定版)
1.5.0 | 2024年5月28日 |
---|---|
1.4.0 | 2023年11月16日 |
1.3.2 | 2023年10月3日 |
1.2.1 | 2023年4月18日 |
0.0.1 | 2021年4月29日 |
#6 in 国际化 (i18n)
44,261 每月下载量
在 63 个 Crates 中使用 (14 个直接使用)
2.5MB
25K SLoC
icu_segmenter
按行、图形符号、单词和句子分割字符串。
此模块作为其自己的 crate (icu_segmenter
) 和作为 icu
crate 的一部分发布。有关 ICU4X 项目的更多详细信息,请参阅后者。
此模块包含以下规则的分割器实现。
- 与 Unicode 标准附录 #14 兼容的行分割器,即 Unicode 换行算法,具有针对 CSS
line-break
和word-break
属性定制换行行为的功能。 - 与 Unicode 标准附录 #29 兼容的图形符号群分割器、单词分割器和句子分割器,即 Unicode 文本分割。
示例
换行
查找换行机会
use icu::segmenter::LineSegmenter;
let segmenter = LineSegmenter::new_auto();
let breakpoints: Vec<usize> = segmenter
.segment_str("Hello World. Xin chào thế giới!")
.collect();
assert_eq!(&breakpoints, &[0, 6, 13, 17, 23, 29, 36]);
请参阅 LineSegmenter
了解更多示例。
图形符号群分割
查找所有图形符号群边界
use icu::segmenter::GraphemeClusterSegmenter;
let segmenter = GraphemeClusterSegmenter::new();
let breakpoints: Vec<usize> = segmenter
.segment_str("Hello World. Xin chào thế giới!")
.collect();
assert_eq!(
&breakpoints,
&[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 21, 22, 23, 24, 25, 28, 29, 30, 31, 34, 35, 36
]
);
请参阅 GraphemeClusterSegmenter
了解更多示例。
单词分割
查找所有单词边界
use icu::segmenter::WordSegmenter;
let segmenter = WordSegmenter::new_auto();
let breakpoints: Vec<usize> = segmenter
.segment_str("Hello World. Xin chào thế giới!")
.collect();
assert_eq!(
&breakpoints,
&[0, 5, 6, 11, 12, 13, 16, 17, 22, 23, 28, 29, 35, 36]
);
请参阅 WordSegmenter
了解更多示例。
句子分割
将字符串分割成句子
use icu::segmenter::SentenceSegmenter;
let segmenter = SentenceSegmenter::new();
let breakpoints: Vec<usize> = segmenter
.segment_str("Hello World. Xin chào thế giới!")
.collect();
assert_eq!(&breakpoints, &[0, 13, 36]);
请参阅SentenceSegmenter
获取更多示例。
更多信息
有关开发、作者身份、贡献等更多信息,请访问ICU4X 主页
。