为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

函数式编程 2019-07-19 16:40:23
将符号、重音字母转换为英文字母问题是,正如你所知,有成千上万的字符在Unicode图表中我想把所有类似的字符转换成英文字母表中的字母。例如,这里有几个转换:ҥ->HѶ->VȲ->YǬ->OƇ->C tђє Ŧค๓เℓy --> the Family...我看到有20多个字母A/A的版本,我不知道如何分类。它们看起来就像干草堆里的针。Unicode字符的完整列表位于http:/www.ssec.wisc.edu/~tomw/java/unicode.html或http://unicode.org/charts/charindex.html..试着向下滚动,看看字母的变化。我如何用Java来转换所有这些呢?请帮助我:
查看完整描述

3 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

试图“将它们全部转化”是解决问题的错误方法。

首先,你需要了解你想要做的事情的局限性。正如其他人所指出的,数字符号的存在是有原因的:它们本质上是语言字母表中唯一的字母,有它们自己的意思/声音等等:删除这些标记就像替换英语单词中的随机字母一样。这甚至在你开始考虑西里尔语和其他基于脚本的文本之前,比如阿拉伯语,它们根本不能被“转换”成英语。

如果你无论出于什么原因,转换字符,那么唯一明智的方法是首先缩小手头任务的范围。考虑输入的来源-如果您正在为“西方世界”编写一个应用程序(尽可能好地使用一个短语),那么您就不太可能需要解析阿拉伯字符了。同样,Unicode字符集包含数百个数学符号和图形符号:用户没有(容易)的方式直接输入这些符号,因此可以假定它们可以被忽略。

通过执行这些逻辑步骤,您可以减少要解析的可能字符数,从而使基于字典的查找/替换操作是可行的。然后,它就变成了创建字典的一小部分单调乏味的工作,而执行替换则是一项琐碎的任务。如果您的语言支持原生Unicode字符(就像Java那样)并正确地优化静态结构,那么这样的查找和替换往往会非常快。

这来自于使用了一个应用程序的经验,该应用程序允许最终用户搜索包含透明字符的书目数据。查找数组(在我们的例子中是这样)可能需要一个人天的时间来生成,以覆盖所有西欧语言的所有透明标记。


查看完整回答
反对 回复 2019-07-19
  • 3 回答
  • 0 关注
  • 624 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信