java如何实现文本规范性_在Java中规范化/不重合文本

如何在

Java中标准化/不标记文本?我目前正在使用java.text.Normalizer:

Normalizer.normalize(str, Normalizer.Form.NFD)

.replaceAll("\\p{InCombiningDiacriticalMarks}+", "")

但它远非完美.例如,它保留挪威字符æ和ø不变.有没有人知道另一种选择?我正在寻找能够将各种语言的字符转换为a-z范围的东西.我意识到有不同的方法可以做到这一点(例如,应该将其编码为’a’,’e’或甚至’ae’?)并且我愿意接受任何解决方案.我宁愿不自己写点东西,因为我认为我不太可能为所有语言做得好.性能并不重要.

用例:我想将用户输入的名称转换为普通的a-z范围名称.转换后的名称将显示给用户,因此我希望它尽可能地匹配用户用其原始语言编写的内容.

编辑:

好的人,谢谢你否定这个帖子而不是解决我的问题,耶! :)也许我应该省略用例.但请允许我澄清一下.我需要转换名称才能在内部存储它.我无法控制这里允许的字母选择.该名称将在用户可见的位置(例如URL)中显示.与您在此论坛上的用户名进行规范化相同的方式,如果您点击您的名字,则会在URL中向您显示.这个论坛将“Băşan”等名称转换为“baan”,将名称“Øyvind”转换为“yvind”.我相信它可以做得更好.我正在寻找想法,最好是图书馆功能为我这样做.我知道我做不到,我知道“o”和“ø”不同等,但如果我的名字是“Øyvind”并且我在一个在线论坛上注册,我可能更喜欢我的用户名是“ oyvind“而不是”yvind“.希望这有任何意义!谢谢!

(不,我们不允许用户选择自己的用户名.我真的只是在寻找java.text.Normalizer的替代品.谢谢!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值