我有以下字符。
Ą¢¥ŞŠŞŤŹŽŻąľśšşťźžżÀÁÂÃÄÅÆÇÈÉÊÈÌÍÈÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâäåæçèêêëìíîïðñòóõþöüÌÚþÚÚ存在
我需要转换成
AcYSSSTZZZalssstzzzAAAAAAACEEEEIIIIDNOOOOOOUUUUYTSaaaaaaaceeeeeiiionooooooouuuuyty
我正在使用 Java 1.4。
Normalizer.decompose(text, true, 0).replaceAll( "\p{InCombiningDiacriticalMarks}+", "");仅用变音符号替换字符。
像 ¢¥ÆÐÞßæðøþ 这样的字符没有被转换。
我该怎么做,在 JDK 1.4 中进行转换的有效方法是什么。
请帮忙。
问候, 斯里德维
最佳答案
查看 ICU project ,尤其是 icu4j 部分。
Transliterator
类将解决您的问题。
这是一个 Transliterator
示例,它将任何脚本转换为拉丁字符并删除所有重音和非 ascii 字符:
Transliterator accentsConverter = Transliterator.getInstance("Any-Latin; NFD; [:M:] Remove; NFC; [^\\p{ASCII}] Remove");
Any-Latin
部分执行转换,NFD; [:M:] 移除; NFC
删除重音符号,[^\\p{ASCII}] Remove
删除所有剩余的非 ASCII 字符。
您只需调用 accentsConverter.transliterate(yourString)
即可获得结果。
您可以在 ICU Transformations guide 中阅读有关如何构建转换 ID(Transliterator.getInstance
的参数)的更多信息.
关于java - 在 Java 中将拉丁字符转换为普通文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10188575/