最近在JavaEye上面看了一篇求助简繁体的转换问题,居然有人说不能告诉你,我晕,小弟不材,写一个出来共享一下;
package com.jatula.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
/**
* 繁体中文转简体中文
* @author jatula
*
*/
public class TrandtionalToSimplified {
private static Map<Character, Character> CHAR_MAP = new HashMap<Character, Character>();
static {
STMapInitialize();
}
/**
* 初始化CHAR_MAP里面的数据
*/
public static void STMapInitialize() {
try {
URL mapf = TrandtionalToSimplified.class.getResource("st.map");
InputStream mapInput = mapf.openStream();
BufferedReader mapbf = new BufferedReader(new InputStreamReader(
mapInput, "utf-8"));
String rline;
while ((rline = mapbf.readLine()) != null) {
CHAR_MAP.put(rline.charAt(1), rline.charAt(0));
}
mapInput.close();
} catch (IOException e) {
e.printStackTrace();
throw new ExceptionInInitializerError("没有找到资源文件st.map");
}
}
/**
* 这是一个把繁体字符串转换简体字符串
*
* @param source
* 要进行转换的繁体字符串
* @return 返回转换后的简体字符串
*/
public static String DoTrandtionalToSimplified(String source) {
if (source == null) {
return null;
}
StringBuffer result = new StringBuffer();
try {
for (int i = 0; i < source.length(); i++) {
char tmp = source.charAt(i);
if (CHAR_MAP.containsKey(tmp)) {
result.append(CHAR_MAP.get(tmp));
} else {
result.append(tmp);
}
}
} catch (NullPointerException e) {
STMapInitialize();
return DoTrandtionalToSimplified(source);
}
return result.toString();
}
public static void main(String[] args) {
TrandtionalToSimplified tts = new TrandtionalToSimplified();
String tto = tts.DoTrandtionalToSimplified("叢叢叢叢");
System.out.println(tto);
}
}
对照表的大伙就自已加吧,如果做到这步大家都不满意,也没有办法了;嘻嘻;
业業
丛叢
像上面那样列一列就OK了,没什么!
换个角度想,简体转繁体也就一样了;
st.map是一个对照对文件,努力点手动加一下;
package com.jatula.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
/**
* 繁体中文转简体中文
* @author jatula
*
*/
public class TrandtionalToSimplified {
private static Map<Character, Character> CHAR_MAP = new HashMap<Character, Character>();
static {
STMapInitialize();
}
/**
* 初始化CHAR_MAP里面的数据
*/
public static void STMapInitialize() {
try {
URL mapf = TrandtionalToSimplified.class.getResource("st.map");
InputStream mapInput = mapf.openStream();
BufferedReader mapbf = new BufferedReader(new InputStreamReader(
mapInput, "utf-8"));
String rline;
while ((rline = mapbf.readLine()) != null) {
CHAR_MAP.put(rline.charAt(1), rline.charAt(0));
}
mapInput.close();
} catch (IOException e) {
e.printStackTrace();
throw new ExceptionInInitializerError("没有找到资源文件st.map");
}
}
/**
* 这是一个把繁体字符串转换简体字符串
*
* @param source
* 要进行转换的繁体字符串
* @return 返回转换后的简体字符串
*/
public static String DoTrandtionalToSimplified(String source) {
if (source == null) {
return null;
}
StringBuffer result = new StringBuffer();
try {
for (int i = 0; i < source.length(); i++) {
char tmp = source.charAt(i);
if (CHAR_MAP.containsKey(tmp)) {
result.append(CHAR_MAP.get(tmp));
} else {
result.append(tmp);
}
}
} catch (NullPointerException e) {
STMapInitialize();
return DoTrandtionalToSimplified(source);
}
return result.toString();
}
public static void main(String[] args) {
TrandtionalToSimplified tts = new TrandtionalToSimplified();
String tto = tts.DoTrandtionalToSimplified("叢叢叢叢");
System.out.println(tto);
}
}
对照表的大伙就自已加吧,如果做到这步大家都不满意,也没有办法了;嘻嘻;
业業
丛叢
像上面那样列一列就OK了,没什么!
换个角度想,简体转繁体也就一样了;
st.map是一个对照对文件,努力点手动加一下;