java utf8 简繁转换 类库_Java封装简体繁体(香港台湾)转换工具
简体繁体转换
新建工具类: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封装简体繁体(香港台湾)转换工具相关推荐
- java繁体转简体包_Java封装简体繁体(香港台湾)转换工具
简体繁体转换 新建工具类:HKTWwordVO import java.io.BufferedReader; import java.io.FileNotFoundException; import ...
- java utf8 简繁转换 类库_JAVA简繁转换(对象)解决办法
JAVA简繁转换(对象) 目前已实现普通字符串的转换代码如下: static String jtPy = "简体字库"; static String ftPy = "繁體 ...
- java utf8 简繁转换 类库_java简繁转换(区分港台)
java工具类,支持中文简体转香港繁体.台湾繁体,繁体转简体: 代码如下: package translate; import java.io.BufferedReader; import java. ...
- java utf8 简繁转换 类库_在Java中进行中文繁体简体转换,基于OpenCC(Open Chinese Convert)方案...
一.OpenCC介绍 OpenCC (Open Chinese Convert,开放中文转换) 是一个用于中文简繁转换的开源项目,支持词汇级别的转换.异体字转换和地区习惯用词转换(中国大陆.台湾.香港 ...
- java utf8 简繁转换 类库,java 中文繁简体转换工具 opencc4j
创作缘由 对于中文的繁简体转换是一种很常见的需求. 但是很多工具类都是简单的做个映射.(使用map,集合,properties)等. 存在一个严重的问题:特殊词组 的转换可能存在问题. OpenCC ...
- 火星文转换php源码,简体/繁体/火星文转换
require_once 'curl.func.php'; $appkey = 'your_appkey_here';//你的appkey $content = '今天天气挺好的';//utf8 $t ...
- 中文简体繁体之间的转换
中文简体繁体之间的转换 2007 年 09 月 13 日 星期四 10:58 对网页进行简繁字体转换的方法一般有两种:一是使用<简繁通>这样的专业软件,另外一种是制作两套版本的网页.显然, ...
- java实现简繁字体转换
另外网上还有一个包,叫ZHConverter,也可以实现.原理是类似的,也是把有繁体字的用一个文件保存起来. 本文参考了这一篇博客 http://hanbin51987.iteye.com/blog/ ...
- java 无符号转有符号_java有符号无符号的转换
数据处理中常常遇到基本数据类型的操作,java都是有符号的数据,而与下位机通信中常常遇到无符号的比如uint8, uint16,uint32等等 1.为了完成这个功能还专门采用ByteBuffer的方 ...
最新文章
- Android app被系统kill的场景
- JQuery中的类选择器
- 实现RTP协议的H.264视频传输系统
- ftp服务器搭建遇到的问题
- ASP.NET Core模块化前后端分离快速开发框架介绍
- java实现遍历树形菜单方法——TreeAction实现
- bit不是java基本类型吗_Java bit / byte 基本数据类型
- linux 服务端口查询,linux 怎么查看服务和端口
- cocos2dx linux eclipse,如何将cocos2dx移植到eclipse上?
- python中math模块函数_python中math模块函数
- showModalDialog模态对话框的使用以及浏览器兼容
- 不确定度计算器_内审员、LIMS系统、外部评审员、不确定度、注册计量师、实验数据分析处理、质量控制和期间核查、方法验证和确认 网络培训汇总...
- YYUC01——Windows本地环境搭建
- lwj_C#_集合stack栈和queue队列
- 微信扫码ios:scanQRCode:the permission value is offline verifying
- elf文件从原理到实现个人总结
- Unbound服务的安装与运行管理
- 2012年中国土地市场网数据(含经纬度)
- PUK 码为8位数字
- ArcGIS坡度的提取
热门文章
- Android学习笔记(四九):通过Content Provider访问数据
- 数组用法以及引用类型和值类型
- python把csv文件转换txt_Python实现txt文件转csv格式
- 1900页Python系列PPT分享七:文件操作(132页)
- Python 3.6部分新特性
- C++ 初识类与对象
- python的变量在使用前不需要先赋值_在赋值Python之前引用的另一个局部变量
- java 热布署 开源_一种简单快捷的 java 热部署方式
- golang mysql条件查询_mysql – 将变量传递给GoLang查询
- 两个vlan如何互通_网络交换机VLAN的常识与划分方法,你知道吗?