简繁体互相转换。

如下maven导包时,缺少字典库,在使用时,并不能进行简繁体内容互转

<!-- https://mvnrepository.com/artifact/com.spreada/ZHConverter -->
<dependency><groupId>com.spreada</groupId><artifactId>ZHConverter</artifactId><version>1.0.0</version>
</dependency>

解决办法:(源码可在末尾x度网盘下载)

package com.durian.common.tool.chinese;import java.io.*;
import java.util.*;/*** 中文简繁体互转* */
public class ChineseUtil {private Properties charMap = new Properties();private Set<String> conflictingSets = new HashSet<>();public static final int TRADITIONAL = 0;public static final int SIMPLIFIED = 1;private static final int NUM_OF_CONVERTERS = 2;private static final ChineseUtil[] converters = new ChineseUtil[NUM_OF_CONVERTERS];private static final String[] propertyFiles = new String[2];static {propertyFiles[TRADITIONAL] = "zh2Hant.properties";// 简转繁字典propertyFiles[SIMPLIFIED] = "zh2Hans.properties";// 繁转简字典}/*** @param converterType 0 for traditional and 1 for simplified* @return*/public static ChineseUtil getInstance(int converterType) {if (converterType >= 0 && converterType < NUM_OF_CONVERTERS) {if (converters[converterType] == null) {synchronized (ChineseUtil.class) {if (converters[converterType] == null) {converters[converterType] = new ChineseUtil(propertyFiles[converterType]);}}}return converters[converterType];} else {return null;}}/*** 简体繁体互转* * @param text          待转换的文本内容* @param converterType 0转成繁体 1 转成简体* @return*/public static String convert(String text, int converterType) {ChineseUtil instance = getInstance(converterType);return instance.convert(text);}// 获取字典库private ChineseUtil(String propertyFile) {InputStream is = null;is = getClass().getResourceAsStream(propertyFile);if (is != null) {BufferedReader reader = null;try {reader = new BufferedReader(new InputStreamReader(is));charMap.load(reader);} catch (FileNotFoundException e) {} catch (IOException e) {e.printStackTrace();} finally {try {if (reader != null)reader.close();if (is != null)is.close();} catch (IOException e) {}}}initializeHelper();}private void initializeHelper() {Map<String, Integer> stringPossibilities = new HashMap<>();Iterator<?> iter = charMap.keySet().iterator();while (iter.hasNext()) {String key = (String) iter.next();if (key.length() >= 1) {for (int i = 0; i < (key.length()); i++) {String keySubstring = key.substring(0, i + 1);if (stringPossibilities.containsKey(keySubstring)) {Integer integer = (Integer) (stringPossibilities.get(keySubstring));stringPossibilities.put(keySubstring, new Integer(integer.intValue() + 1));// 多意字字池} else {stringPossibilities.put(keySubstring, new Integer(1));}}}}iter = stringPossibilities.keySet().iterator();while (iter.hasNext()) {String key = (String) iter.next();if (((Integer) (stringPossibilities.get(key))).intValue() > 1) {conflictingSets.add(key);}}}/*** 内容转换* * @param in* @return*/public String convert(String in) {StringBuilder outString = new StringBuilder();// 转换后的内容StringBuilder stackString = new StringBuilder();// 压栈池(临时)for (int i = 0; i < in.length(); i++) {char c = in.charAt(i);String key = "" + c;stackString.append(key);if (conflictingSets.contains(stackString.toString())) {// 多意字先跳过,直接先入栈} else if (charMap.containsKey(stackString.toString())) { // 栈内容如果直接属于字典库,那么直接进行转换,并且清理栈内的东西outString.append(charMap.get(stackString.toString()));stackString.setLength(0);} else { // 当且不是多意字,在字典里也找不到,则需要把栈内除最后一个字去掉后,再次分词/字查找转换CharSequence sequence = stackString.subSequence(0, stackString.length() - 1);stackString.delete(0, stackString.length() - 1);flushStack(outString, new StringBuilder(sequence));}}flushStack(outString, stackString);return outString.toString();}private void flushStack(StringBuilder outString, StringBuilder stackString) {while (stackString.length() > 0) {if (charMap.containsKey(stackString.toString())) {outString.append(charMap.get(stackString.toString()));stackString.setLength(0);} else {outString.append("" + stackString.charAt(0));stackString.delete(0, 1);}}}}

代码和字典结构

测试结果

源码地址:
百度网盘链接: https://pan.baidu.com/s/14RdfhM8XqN0KqV1czmLcfg 提取码: q94q 复制这段内容后打开百度网盘手机App,操作更方便哦

java简繁体互转(附源码和字典)相关推荐

  1. java手机象棋软件下载,Java手机网络版象棋游戏附源码JAVA游戏源码下载

    运行于手机上的中国象棋游戏,鉴于JAVA J2ME技术,本游戏分服务端和客户端,导入JAR包即可在手机上运行,内有开发文档和运用说明. Java手机网络版象棋游戏附源码 (1 folders, 2 f ...

  2. 天天酷跑php源码_使用Java实现天天酷跑(附源码)

    首先,写一个需求文档: 一.项目名称:<天天酷跑>(RunDay) 二.功能介绍: 闯关类游戏,玩家登录后,选择进入游戏,通过键盘控制玩家的上下左右移动,来躲避 障碍物和吃金币,玩家躲避的 ...

  3. 百看不如一练,55个Java练手项目(附源码+视频教程),全都在这里了

    我们都知道,不管学习那门语言最终都要做出实际的东西来,而对于编程而言,这个实际的东西当然就是项目啦,不用我多说大家都知道学编程语言做项目的重要性. 于是,我熬了几个通宵,终于整理出了55个培训机构内部 ...

  4. Java项目—健身房管理系统(附源码+文档)

    今天给大家分享一个Java实战项目-健身房管理系统(附源码+数据库+文档) 需要资料源码的小伙伴可以点击下方链接和小编一起学习~ 需要源码直接私信小编哟~https://www.bilibili.co ...

  5. 手把手搭建Java金融借贷系统【附源码】(毕设)

    一.项目简介 本课程演示的是一套基于基于JavaWeb实现的金融借贷系统 或 P2P金融管理系统 或 小额贷款系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群. 详细介绍 ...

  6. 视频教程-手把手搭建Java金融借贷系统【附源码】(毕设)-Java

    手把手搭建Java金融借贷系统[附源码](毕设) 南京大学软件工程硕士,全栈开发工程师,全栈讲师. 曾就职于中软国际.擎天科技.华为等公司,擅长Java开发.Web前端.Python爬虫.PHP等领域 ...

  7. Java项目——物业管理系统(附源码+数据库)

    今天给小伙伴们分享一个Java项目--物业管理系统(附源码+数据库) 感兴趣的小伙伴可以点击下方链接和小编一起学习哟~ https://www.bilibili.com/video/BV1cD4y1s ...

  8. JAVA计算机毕业设计摄影网站(附源码、数据库)

    JAVA计算机毕业设计摄影网站(附源码.数据库) 目运行 环境项配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(Inte ...

  9. 10款经典Java游戏项目合集,附源码课件

    家人们,我又来啦,今天我们来看一下学Java必练的10款游戏项目! 大家都知道学习编程必须要做的就是敲代码和做项目练手了,那项目有难有易,很多小伙伴不知道从哪里找项目来练习,今日我们来看一下初级项目中 ...

  10. Java项目—停车场管理系统(附源码+资料课件)

    今天给大家分享一个Java项目开发-停车场管理系统(附源码+课件资料). 感兴趣的小伙伴可以点击下方链接,和小编一起学编程哟~ https://www.bilibili.com/video/BV1de ...

最新文章

  1. vCloud Automation Center (vCAC) 6.0 (一)
  2. iOS边练边学--iOS中的XML数据解析
  3. html 屏蔽蓝色电话,html – 在Chrome扩展程序中停用文字字段蓝色突出显示?
  4. ipad鼠标圆圈变成箭头_【附视频指南】iPad 只能刷剧?来看看我是如何把它武装成生产力工具的!...
  5. python2.7下面字节数组(ByteArray)和16进制字符串(HexString)转化
  6. 嵌入式实训-day1
  7. Designer设计无代码工作流
  8. Ubuntu上面安装Mongo
  9. 文字绘制——pygame之旅
  10. c语言单元测验答案,c语言试题及答案
  11. java实现ppt转图片、ppt转pdf
  12. 艾永亮:只要改变这两点,传统健身房行业可以逃离浩沙死咒
  13. 移动端判断手机横竖屏状态及加载相应样式或内容的解决方案
  14. BootStrap富文本编辑器Summernote
  15. OEM,ODM,OBM,JDM概念
  16. 在少儿编程中使用easygui来实现交互(1)——msgbox
  17. 图卷积神经网络4-空域卷积:空域卷积局限性分析和过平滑解决方案
  18. 2021-02-15:给定一个整型数组arr,代表数值不同的纸牌排成一条线。玩家A和玩家B依次拿走每张纸牌,规定玩家A先拿,玩家B后拿。但是每个玩家每次只能拿走最左或最右的纸牌,玩家A和玩家B都绝顶聪
  19. php自定义微博尾巴,新浪微博怎么自定义小尾巴 新浪微博自定义小尾巴方法
  20. SAP调整税码税率配置

热门文章

  1. 建立统计回归模型的基本步骤_基本回归模型
  2. 简简单单批量安装windows主机
  3. 关于跳转页面报404、500错误设置自定义图片和文字
  4. 软件架构风格介绍和总结
  5. DIS全球首款基于数字资产证券化交易生态系统
  6. 腾讯QQ就“读取浏览器历史记录”道歉!
  7. 软件工程师能力自我评价表
  8. 基于CCS工程MSP430串口升级(二)
  9. 什么是 主机地址 、网络地址
  10. 20200720《Flask进阶》——蓝本