我正在寻找一款Java库,可以对文本进行“标准化”,类似于标准的Normalizer,但是更广泛(类似于utf8proc LUMP)。
它应该将所有类型的特殊字符替换为ASCII等效字符(如果可能的话)。将所有空格的变体替换为代码32,将所有破折号的变体(长、短、细等)替换为代码45等。
我正在寻找一款Java库,可以对文本进行“标准化”,类似于标准的Normalizer,但是更广泛(类似于utf8proc LUMP)。
它应该将所有类型的特殊字符替换为ASCII等效字符(如果可能的话)。将所有空格的变体替换为代码32,将所有破折号的变体(长、短、细等)替换为代码45等。
Map<Character, Character>
或 Map<Integer, Integer>
都可以考虑。根据您的喜好填充替换映射,例如通过使用 utf8proc 的 lump.txt 和 字符类别 的来源。Map<Character, Character> LUMP;
static {
LUMP = new HashMap<Character, Character>();
LUMP.put('\u2216', '\\'); // set minus
LUMP.put('\u007C', '|'); // divides
// ...
}
LUMP.get(codePoint)
是否为非空。如果是这种情况,则添加返回的值,否则将代码点添加到StringBuilder中。就是这样。你有没有研究过icu4j的Normalizer?
normalize
可以将Unicode文本转换为等效的组合或分解形式,从而更容易地对文本进行排序和搜索。normalize
支持Unicode标准附录#15-Unicode规范化形式中描述的标准规范化形式。