简体繁体转换

新建工具类:HKTWwordVO

import java.io.BufferedReader;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.util.HashMap;

import java.util.HashSet;

import java.util.Iterator;

import java.util.Map;

import java.util.Properties;

import java.util.Set;

/**

* 类名称:HKTWwordVO

* 类描述:香港、台湾字体库

*

* @author 漫路h

* Created by 2020-08-24 18:52

*/

public class HKTWwordVO {

/** 所有词汇 */

private Properties charMap = new Properties();

/** 高频词汇 */

private Set conflictingSets = new HashSet();

/** 繁体_台湾 */

public static final int TAIWAN = 0;

/** 繁体_香港 */

public static final int HONGKONG = 1;

/** 简体 */

public static final int SIMPLE = 2;

private static final int NUM_OF_CONVERTERS = 3;

private static final HKTWwordVO[] converters = new HKTWwordVO[NUM_OF_CONVERTERS];

private static final String[] propertyFiles = new String[NUM_OF_CONVERTERS];

static {

propertyFiles[TAIWAN] = "taiwan.properties"; // 台湾

propertyFiles[HONGKONG] = "hongkong.properties"; // 香港

propertyFiles[SIMPLE] = "simple.properties"; // 简体

}

public static void main(String[] args) {

String str = "钩子里面是关注";

// 转台湾繁体

String convert = HKTWwordVO.convert(str, HKTWwordVO.TAIWAN);

System.out.println(convert);

// 转香港繁体

convert = HKTWwordVO.convert(str, HKTWwordVO.HONGKONG);

System.out.println(convert);

// 繁体转简体

String convert2 = HKTWwordVO.convert("鉤子裡面是關注、鈎子裏面是關注", HKTWwordVO.SIMPLE);

System.out.println(convert2);

}

/**

*

* @param converterType

* 0 for traditional and 1 for simplified

* @return

*/

public static HKTWwordVO getInstance(int converterType) {

if (converterType >= 0 && converterType < NUM_OF_CONVERTERS) {

if (converters[converterType] == null) {

synchronized (HKTWwordVO.class) {

if (converters[converterType] == null) {

converters[converterType] = new HKTWwordVO(

propertyFiles[converterType]);

}

}

}

return converters[converterType];

} else {

return null;

}

}

public static String convert(String text, int converterType) {

HKTWwordVO instance = getInstance(converterType);

return instance.convert(text);

}

private HKTWwordVO(String propertyFile) {

InputStream is = null;

is = getClass().getResourceAsStream("/"+propertyFile);

// File propertyFile = new

// File("C:/Temp/testMDB/TestTranslator/abc.txt");

if (is != null) {

BufferedReader reader = null;

try {

reader = new BufferedReader(new InputStreamReader(is));

charMap.load(reader);

} catch (FileNotFoundException e) {

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} finally {

try {

if (reader != null)

reader.close();

if (is != null)

is.close();

} catch (IOException e) {

}

}

}

initializeHelper();

}

@SuppressWarnings("rawtypes")

private void initializeHelper() {

Map 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);

}

}

}

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);

}

}

}

String parseOneChar(String c) {

if (charMap.containsKey(c)) {

return (String) charMap.get(c);

}

return c;

}

}

properties文件地址--百度网盘

链接:https://pan.baidu.com/s/1eBzorApG77pJzGSknfxo8w

提取码:g9nr

java utf8 简繁转换 类库_Java封装简体繁体(香港台湾)转换工具相关推荐

  1. java繁体转简体包_Java封装简体繁体(香港台湾)转换工具

    简体繁体转换 新建工具类:HKTWwordVO import java.io.BufferedReader; import java.io.FileNotFoundException; import ...

  2. java utf8 简繁转换 类库_JAVA简繁转换(对象)解决办法

    JAVA简繁转换(对象) 目前已实现普通字符串的转换代码如下: static String jtPy = "简体字库"; static String ftPy = "繁體 ...

  3. java utf8 简繁转换 类库_java简繁转换(区分港台)

    java工具类,支持中文简体转香港繁体.台湾繁体,繁体转简体: 代码如下: package translate; import java.io.BufferedReader; import java. ...

  4. java utf8 简繁转换 类库_在Java中进行中文繁体简体转换,基于OpenCC(Open Chinese Convert)方案...

    一.OpenCC介绍 OpenCC (Open Chinese Convert,开放中文转换) 是一个用于中文简繁转换的开源项目,支持词汇级别的转换.异体字转换和地区习惯用词转换(中国大陆.台湾.香港 ...

  5. java utf8 简繁转换 类库,java 中文繁简体转换工具 opencc4j

    创作缘由 对于中文的繁简体转换是一种很常见的需求. 但是很多工具类都是简单的做个映射.(使用map,集合,properties)等. 存在一个严重的问题:特殊词组 的转换可能存在问题. OpenCC ...

  6. 火星文转换php源码,简体/繁体/火星文转换

    require_once 'curl.func.php'; $appkey = 'your_appkey_here';//你的appkey $content = '今天天气挺好的';//utf8 $t ...

  7. 中文简体繁体之间的转换

    中文简体繁体之间的转换 2007 年 09 月 13 日 星期四 10:58 对网页进行简繁字体转换的方法一般有两种:一是使用<简繁通>这样的专业软件,另外一种是制作两套版本的网页.显然, ...

  8. java实现简繁字体转换

    另外网上还有一个包,叫ZHConverter,也可以实现.原理是类似的,也是把有繁体字的用一个文件保存起来. 本文参考了这一篇博客 http://hanbin51987.iteye.com/blog/ ...

  9. java 无符号转有符号_java有符号无符号的转换

    数据处理中常常遇到基本数据类型的操作,java都是有符号的数据,而与下位机通信中常常遇到无符号的比如uint8, uint16,uint32等等 1.为了完成这个功能还专门采用ByteBuffer的方 ...

最新文章

  1. Android app被系统kill的场景
  2. JQuery中的类选择器
  3. 实现RTP协议的H.264视频传输系统
  4. ftp服务器搭建遇到的问题
  5. ASP.NET Core模块化前后端分离快速开发框架介绍
  6. java实现遍历树形菜单方法——TreeAction实现
  7. bit不是java基本类型吗_Java bit / byte 基本数据类型
  8. linux 服务端口查询,linux 怎么查看服务和端口
  9. cocos2dx linux eclipse,如何将cocos2dx移植到eclipse上?
  10. python中math模块函数_python中math模块函数
  11. showModalDialog模态对话框的使用以及浏览器兼容
  12. 不确定度计算器_内审员、LIMS系统、外部评审员、不确定度、注册计量师、实验数据分析处理、质量控制和期间核查、方法验证和确认 网络培训汇总...
  13. YYUC01——Windows本地环境搭建
  14. lwj_C#_集合stack栈和queue队列
  15. 微信扫码ios:scanQRCode:the permission value is offline verifying
  16. elf文件从原理到实现个人总结
  17. Unbound服务的安装与运行管理
  18. 2012年中国土地市场网数据(含经纬度)
  19. PUK 码为8位数字
  20. ArcGIS坡度的提取

热门文章

  1. Android学习笔记(四九):通过Content Provider访问数据
  2. 数组用法以及引用类型和值类型
  3. python把csv文件转换txt_Python实现txt文件转csv格式
  4. 1900页Python系列PPT分享七:文件操作(132页)
  5. Python 3.6部分新特性
  6. C++ 初识类与对象
  7. python的变量在使用前不需要先赋值_在赋值Python之前引用的另一个局部变量
  8. java 热布署 开源_一种简单快捷的 java 热部署方式
  9. golang mysql条件查询_mysql – 将变量传递给GoLang查询
  10. 两个vlan如何互通_网络交换机VLAN的常识与划分方法,你知道吗?