将符号、重音字母转换为英文字母

将符号、重音字母转换为英文字母

问题是,正如你所知,有成千上万的字符在Unicode图表中我想把所有类似的字符转换成英文字母表中的字母。

例如,这里有几个转换:

ҥ->HѶ->VȲ->YǬ->OƇ->C
tђє Ŧค๓เℓy --> the Family...

我看到有20多个字母A/A的版本,我不知道如何分类。它们看起来就像干草堆里的针。

Unicode字符的完整列表位于http:/www.ssec.wisc.edu/~tomw/java/unicode.htmlhttp://unicode.org/charts/charindex.html..试着向下滚动,看看字母的变化。

我如何用Java来转换所有这些呢?请帮助我:


函数式编程
浏览 627回答 3
3回答

慕森卡

试图“将它们全部转化”是解决问题的错误方法。首先,你需要了解你想要做的事情的局限性。正如其他人所指出的,数字符号的存在是有原因的:它们本质上是语言字母表中唯一的字母,有它们自己的意思/声音等等:删除这些标记就像替换英语单词中的随机字母一样。这甚至在你开始考虑西里尔语和其他基于脚本的文本之前,比如阿拉伯语,它们根本不能被“转换”成英语。如果你必无论出于什么原因,转换字符,那么唯一明智的方法是首先缩小手头任务的范围。考虑输入的来源-如果您正在为“西方世界”编写一个应用程序(尽可能好地使用一个短语),那么您就不太可能需要解析阿拉伯字符了。同样,Unicode字符集包含数百个数学符号和图形符号:用户没有(容易)的方式直接输入这些符号,因此可以假定它们可以被忽略。通过执行这些逻辑步骤,您可以减少要解析的可能字符数,从而使基于字典的查找/替换操作是可行的。然后,它就变成了创建字典的一小部分单调乏味的工作,而执行替换则是一项琐碎的任务。如果您的语言支持原生Unicode字符(就像Java那样)并正确地优化静态结构,那么这样的查找和替换往往会非常快。这来自于使用了一个应用程序的经验,该应用程序允许最终用户搜索包含透明字符的书目数据。查找数组(在我们的例子中是这样)可能需要一个人天的时间来生成,以覆盖所有西欧语言的所有透明标记。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java