java开源好用的简繁转换类库推荐
作者:一灰灰 发布时间:2022-11-09 06:31:32
引言
今天给大家介绍一个非常有意思类库,基于java实现的简繁体转换,适用于后端、android等开发领域
源码地址:* liuyueyi/quick-chinese-transfer: 简繁转换,支持香港繁体,台湾繁体与简体互转
1. 实例体验
以maven做项目管理,可以直接从中央仓库下载,再pom文件中添加以下依赖即可
<!-- https://mvnrepository.com/artifact/com.github.liuyueyi/quick-transfer-core -->
<dependency>
<groupId>com.github.liuyueyi</groupId>
<artifactId>quick-transfer-core</artifactId>
<version>0.2.6</version>
</dependency>
说明:0.2.6
版本于2022-08-11上传,若在mvn仓库搜索不到,不要慌,可以先使用0.2.5
如果是gradle做项目管理,依赖同样很简单
// https://mvnrepository.com/artifact/com.github.liuyueyi/quick-transfer-core
implementation 'com.github.liuyueyi:quick-transfer-core:0.2.6'
此外,针对网络不好的小伙伴,也可以通过jitpack的方式导入依赖,具体姿势如下
maven依赖
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependency>
<groupId>com.github.liuyueyi.quick-chinese-transfer</groupId>
<artifactId>quick-transfer-core</artifactId>
<version>0.2.6</version>
</dependency>
gradle依赖
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.liuyueyi.quick-chinese-transfer:quick-transfer-core:0.2.6'
}
环境准备完毕之后,可以直接进行使用了,使用姿势非常非常非常的简单
public void testTrans() {
String text = "这斜月三星洞…… 长寿面,孙悟空,猪八戒,唐僧,沙和尚,白龙马,李靖,托塔天王, 戏说西游,许多人都这样说,收拾一下,拾金不昧;纔=才";
// 简体转繁体
String out = ChineseUtils.s2t(text);
System.out.println("s2t -->" + out);
// 简体转香港繁体
String hkOut = ChineseUtils.s2hk(text);
System.out.println("s2hk -->" + hkOut);
// 简体转台湾繁体
String twOut = ChineseUtils.s2tw(text);
System.out.println("s2tw --> " + twOut);
// 繁体转简体
String origin = ChineseUtils.t2s(out);
System.out.println("t2s -->" + origin);
// 香港繁体转简体
System.out.println("hk2s -->" + ChineseUtils.hk2s(hkOut));
// 台湾繁体转简体
System.out.println("tw2s -->" + ChineseUtils.tw2s(twOut));
}
入口类 ChineseUtils
支持简繁互转,这里区分了香港繁体 + 台湾繁体,两者的主要区别在于某些字、词的叫法不一样
通常来讲,使用最简单的简繁互即可
上面的case输出结果如下:
s2t -->這斜月三星洞…… 長壽麪,孫悟空,豬八戒,唐僧,沙和尚,白龍馬,李靖,托塔天王, 戲說西遊,許多人都這樣說,收拾一下,拾金不昧;纔=才
s2hk -->這斜月三星洞…… 長壽麪,孫悟空,豬八戒,唐僧,沙和尚,白龍馬,李靖,托塔天王, 戲説西遊,許多人都這樣説,收拾一下,拾金不昧;才=才
s2tw --> 這斜月三星洞…… 長壽麵,孫悟空,豬八戒,唐僧,沙和尚,白龍馬,李靖,托塔天王, 戲說西遊,許多人都這樣說,收拾一下,拾金不昧;才=才
t2s -->这斜月三星洞…… 长寿面,孙悟空,猪八戒,唐僧,沙和尚,白龙马,李靖,托塔天王, 戏说西游,许多人都这样说,收拾一下,拾金不昧;才=才
hk2s -->这斜月三星洞…… 长寿面,孙悟空,猪八戒,唐僧,沙和尚,白龙马,李靖,托塔天王, 戏说西游,许多人都这样说,收拾一下,拾金不昧;才=才
tw2s -->这斜月三星洞…… 长寿面,孙悟空,猪八戒,唐僧,沙和尚,白龙马,李靖,托塔天王, 戏说西游,许多人都这样说,收拾一下,拾金不昧;才=才
2. 进阶使用
简繁转换,核心在于词典的管理,改类库在首次实现转换的时候,会加载词典,并解析为内部的数据结构Dict;因此第一次调用时,会出现冷启动的耗时高问题
2.1 预热
基于此,可以再合适的地方先预热加载词典;官方提供了同步预热/异步预热两种方式,如
// 预热加载所有的词典
ChineseUtils.preLoad(true, TransType.values());
// 预加载简体转繁体词典
ChineseUtils.preLoad(true, TransType.SIMPLE_TO_TRADITIONAL);
// 预加载简繁互转词典
ChineseUtils.preLoad(true, TransType.SIMPLE_TO_TRADITIONAL, TransType.TRADITIONAL_TO_SIMPLE);
preLoad
方法的第一个参数,就是用来控制同步还是异步的情况
后面的参数则为希望加载的词典
2.2 卸载
同样有了预热就有卸载,对于客户端的小伙伴来说可能更关注这一点的内存占用;对于不需要的词典,可以指定卸载
// 卸载所有词典
ChineseUtils.unLoad(TransType.values());
// 卸载简繁互转词典
ChineseUtils.unLoad(TransType.SIMPLE_TO_TRADITIONAL, TransType.TRADITIONAL_TO_SIMPLE);
2.3 通用方法
在第一节的使用实例中,提供了各种特有的方法来实现转换;同样也提供一个统一的方法,根据传参的词典类型来进行转换;适用于统一api接口的设计,根据传参来返回对应的结果场景
ChineseUtils.transfer("一灰灰blog", TransType.SIMPLE_TO_TRADITIONAL);
3. 小结
最后简单介绍下这个项目,没错这个项目目前是我再维护,核心实现主要来自 chinese-utils,那么为啥要独立搞一个呢? 原因如下
这个项目不再维护了,最后一次提交在15年
词典旧且,有问题的数据较多,所以我完全替换了它的默认词典,改用 HanLP 词典文件
新特性增加(如港台繁体的区分支持,如预热加载)
性能优化等(词典解析规则、匹配算法的改进等)
来源:https://juejin.cn/post/7130585503736266760


猜你喜欢
- 目录一、基本使用二、常用的 APIImageLoaderImageRequestDisposable图片变换三、功能拓展Intercepto
- 介绍细心的小伙伴可能会发现,抖音新上线了IP属地的功能,小伙伴在发表动态、发表评论以及聊天的时候,都会显示自己的IP属地信息下面,我就来讲讲
- 一、前言知识补充:Arrays.copyOf函数:public static int[] copyOf(int[] original, in
- 本文实例为大家分享了使用的是iTextSharp添加PDF水印的具体代码,供大家参考,具体内容如下需要iTextSharp.dll, 下载地
- 这篇文章主要介绍了Java并发CopyOnWrite容器原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- 使用Spring data JPA开发已经有一段时间了,这期间学习了一些东西,也遇到了一些问题,在这里和大家分享一下。前言:Spring d
- 前言有人说Gradle使用groovy语言编写,简单,明了没像maven使用xml臃肿,其实我倒不觉得,我觉得maven挺好的,管理jar依
- 1、安装依赖<dependency> <
- (1)不需要传递参数,也不需要返回参数ThreadStart是一个委托,这个委托的定义为void ThreadStart(),没有参数与返回
- 1.在java代码中(SplashActivity继承AppCompatActivity时无效)2.在manifest.xml中改Theme
- JAVA基础八股文Switch能支持哪些类型?jdk5之前,switch能够作用在byte,short,char,int(实际上都是提升为i
- 本文实例为大家分享了unity使用socket实现聊天室的具体代码,供大家参考,具体内容如下unity聊天室服务端实现using Syste
- 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Ap
- 1、修改application.properties新建 Mapper、实体类 相应的文件夹,将不同数据源的文件保存到对应的文件夹下# te
- 前言从繁到简是贯彻SSM学习过程的原始真解一.bean的加载控制在MVC的模式中,Spring控制着业务和功能的bean,SpringMVC
- Java * 分析及理解代理设计模式定义:为其他对象提供一种代理以控制对这个对象的访问。 * 使用java * 机制以巧妙的方式实现了
- android客户端生成本地验证码主要用来限制用户随意按请求按钮,其实该示例也是来对自定义view的练练手而已,先给出效果图吧其中可定制:*
- 一、直接看效果二、直接上代码1.自定义控件部分package com.susan.project.myapplication;import
- 一、什么时候会加载类?使用到类中的内容时加载:有三种情况1.创建对象:new StaticCode();2.使用类中的静态成员:Static
- 本文为大家分享了Android中Drawable方法的详细使用方法,供大家参考,具体内容如下1. BitmapDrawable相关方法:新建