java utf8 简繁转换 类库_java简繁转换(区分港台)
java工具类,支持中文简体转香港繁体、台湾繁体,繁体转简体;
代码如下:
package translate;
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 wangsen
* 创建时间:2018年5月15日 下午4:12:39
*
*/
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;
}
}
java utf8 简繁转换 类库_java简繁转换(区分港台)相关推荐
- java utf8 简繁转换 类库_JAVA简繁转换(对象)解决办法
JAVA简繁转换(对象) 目前已实现普通字符串的转换代码如下: static String jtPy = "简体字库"; static String ftPy = "繁體 ...
- java utf8 简繁转换 类库_Java封装简体繁体(香港台湾)转换工具
简体繁体转换 新建工具类:HKTWwordVO import java.io.BufferedReader; import java.io.FileNotFoundException; import ...
- java 错误日期转正确日期_Java日期格式转换-错误的月份
我在用Java转换日期时遇到问题,不知道我要去哪里错了... String dateStr = "2011-12-15"; String fromFormat = "yy ...
- java 错误日期转正确日期_java – jdk8日期转换中的错误?
我正在为java.util.Date和java.time.LocalDateTime之间的java-8转换编写一些测试代码,发现异常似乎发生在从正常时间到夏季的转换后的一小时内,当年是2038年或更高 ...
- java把字符转成浮点_java 字符型转换成浮点型
1.字符串转化为整形.浮点类型 String s = "100"; //方法一 int a = Integer.parseInt(String s); Long.parseLong ...
- java整形变量转换字符串_JAVA整型转换字符串以及相互转换的相关实例
JAVA整型转换字符串以及相互转换的相关实例.java数据类型之间的转换.怎么把整数 int 转换成字串 String ?怎么把字符串 String 转换成整数 int类型? 整型与字符串转换实例: ...
- java字符类的英文表示_java 字符串截取类 区分中文、英文、数字、标点符号
package com.founder.fix.ims; /** * @author WANGYUTAO * 操作字符串 */ public class SubString { // public s ...
- java utf8 简繁转换 类库,java 中文繁简体转换工具 opencc4j
创作缘由 对于中文的繁简体转换是一种很常见的需求. 但是很多工具类都是简单的做个映射.(使用map,集合,properties)等. 存在一个严重的问题:特殊词组 的转换可能存在问题. OpenCC ...
- 简繁 data_gb.php 下载,简繁转换的程序_php
php代码:-------------------------------------------------------------------------------- /** *中速版,中等内存 ...
最新文章
- python源代码-python源码
- php-fpm进程数优化方法
- sql server2008中左连接,右连接,等值连接的区别
- hadoop入门-在windows上编译x64位hadoop
- Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(一)
- js slice 参数为负值
- 力扣401.二进制手表
- 录音整理文字工具otranscribe简介
- 如何下载和安装 iOS开发教程
- java分页计算_java分页算法
- hadoop 查看集群的网页监控状态
- 搭建一个简单的服务器
- 真正“自学”入门编程/程序员是一种怎样的体验?
- 从乘客丢钱包的报警处理过程谈职业化和专业化
- Android热修复技术——QQ空间补丁方案解析(1)
- C++春招实习和秋招面试过程记录
- python自学笔记15之实例之绘图、dataframe操作、读写csv,excle
- mysql 查看等待事件_分享两个实用SQL--查看故障时间等待事件、问题sql及会话访问次数...
- 2.ECMAScript6详解
- c语言%.6s和%6s的差别,iPhone 6s与iPhone 7的差别 看完全懂了!
热门文章
- linux图形界面压缩软件,p7zip 压缩软件 for Linux
- python中有数组吗_python中有数组吗
- Prometheus_additional传统配置
- 计算机毕业设计Python+uniapp+安卓移动LYQ电子商城APP(WEB+APP+LW)
- 宠物粮赛道拥挤,波奇、中宠、佩蒂、三只松鼠们如何赶风口?
- 算法——猴子分桃问题
- V2V-PoseNet:Voxel-to-Voxel Prediction Network for Accurate 3D Hand and Human Pose Estimation from...
- 在虚拟机上搭建云平台环境(2)Controller和Computer系统安装
- 软件测试面试复习题(一)
- request java获取参数body_@RequestBody参数已经被读取,究竟是何原因?