一)背景
由于这两天领导给香港用户进行系统培训的时候,有用户提到,需要系统中能支持一些关键字简体繁体查询。
简单说,用户输入简体或输入繁体时,都能筛选出简体和繁体的所有数据。
优点:数据筛选的多样化
缺点:查询性能可能会稍微慢一点
二)ZHConverter
在网上百度了一下,几乎所有的简体繁体转换都是用到了zhconverter的jar,而且很多文章都是靠前排列的,所以着重看了下该方式的实现源码,发现该jar实现的方式可能会存在性能问题。
原因一:代码中用了线程同步。
原因二:在使用的时候,需要不断初始化一些类(有些类可以用单例模式)。
所以该方式就被抛弃了。
三)opencc4j
该方式比较简单,直接引用jar,然后直接使用。(选用的此方式)
在pom.xml文件中新增以下配置(1.1.0版是目前最新版本):
<!--字符繁体简体转换-->
<dependency>
<groupId>com.github.houbb</groupId>
<artifactId>opencc4j</artifactId>
<version>1.1.0</version>
</dependency>
直接在代码中使用,如下:
// 把繁体转换成简体
String simple = ZhConverterUtil.convertToSimple("歐陽");
// 把简体转换成繁体
String traditional = ZhConverterUtil.convertToTraditional("欧阳");
四)自主实施
看了上面两种方式之后,自己也想到了该怎么实现简体繁体转换了,下面只提供思路。
第一步:把所有简体和繁体穷举出来,然后分别编写成两个配置文件,可以使用unicode方式配置成键值对的关系,如后缀为properties的文件。
第二步:写一个单例类,该类在项目启动的时候加载一次,可以先把所有简体和繁体配置加载到内存中(文件不会很大),或放置到redis缓存中,使用键值对的方式存储起来。
第三步:调用的时候,把需要转换的字符串分隔,然后自行匹配,最后重新拼接好(可能需要把每一个中文分隔转换成unicode方式去匹配,匹配好之后再重新拼接好)。
识别二维码关注个人微信公众号
本章完结,待续,欢迎转载!
本文说明:该文章属于原创,如需转载,请标明文章转载来源!