我在看的算法,可以用变音符号(字符之间映射波浪,抑扬,插入符号,变音符号,卡隆)和他们的"简单"的角色.
例如:
? ? ? ñ ? ? ? ? ? ? ? ? ? ? ? --> n
á --> a
ä --> a
? --> a
? --> o
Run Code Online (Sandbox Code Playgroud)
等等.
我想用Java做这个,虽然我怀疑它应该是Unicode-y,并且应该可以在任何语言中合理地使用.
目的:允许轻松搜索带有变音符号的单词.例如,如果我有一个网球运动员数据库,并且输入了Björn_Borg,我还会保留Bjorn_Borg,这样如果有人进入Bjorn而不是Björn,我就能找到它.
以下代码是众所周知的将重音字符转换为纯文本:
Normalizer.normalize(text, Normalizer.Form.NFD).replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
Run Code Online (Sandbox Code Playgroud)
我用这个替换了我的"手工制作"方法,但我需要理解replaceAll的"正则表达式"部分
1)什么是"InCombiningDiacriticalMarks"?
2)文件在哪里?(和类似的?)
谢谢.