【发布时间】:2012-01-12 10:17:48
【问题描述】:
在Java中有没有按笔画对中文字符串进行排序的库?
【问题讨论】:
在Java中有没有按笔画对中文字符串进行排序的库?
【问题讨论】:
试试java.text.Collator 中文版Locale。
【讨论】:
Locale.SIMPLIFIED_CHINESE按汉语拼音排序,而Locale.TRADITIONAL_CHINESE按笔划排序。
如果您想自己滚动代码,数据的一个来源是 Unihan 数据库的 Radical-Stroke Counts 字段,来自 Unicode Consortium。该链接指向技术报告 38 中描述这些字段的部分。
请注意,表意字符的笔画计数基于所显示字符的结构(或形态),即其字形。字形的形态是字体设计风格的函数——尤其是字体是否遵循繁体中文、简体中文或日文惯例。但是 Java 中的字符代码通常基于 Unicode 标准,它将所有这些约定中的字符统一在一个字符代码中。
因此,您将需要外部信息来告诉您您的文本使用的是哪种约定。这反过来告诉您使用 Unihan 数据库的哪个字段。如果你知道你的中文文本字符串都是简体,或者都是繁体,那么你就有足够的信息了。
还可以查看Chinese Character Web API,它提供来自 Unihan 数据库的数据。
【讨论】: