java - 在 Java 中将拉丁字符转换为普通文本

标签 java

我有以下字符。

Ą¢¥ŞŠŞŤŹŽŻąľśšşťźžżÀÁÂÃÄÅÆÇÈÉÊÈÌÍÈÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâäåæçèêêëìíîïðñòóõþöüÌÚþÚÚ存在

我需要转换成

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/

相关文章:

java - 如果我只从集合中读取,是否需要担心线程安全?

java - 什么是脆弱的基类问题?

java - 如何在android中像facebook一样在屏幕底部显示三个按钮?

Java - 检查输入是否为正整数、负整数、自然数等。

java - java 中的 mouseclicked 事件无法填充文本字段

java - 通过 Smack android api 添加新用户到 ejabberd

java - 部署应用程序时出现 NotWritablePropertyException

java - 这是最常见的情况吗?

java - 删除网址

java - 将字符串值转换为变量名 |字符串值包含变量名