首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

简体转繁体也许繁体转简体

2012-10-30 
简体转繁体或者繁体转简体最近在JavaEye上面看了一篇求助简繁体的转换问题,居然有人说不能告诉你,我晕,小

简体转繁体或者繁体转简体
最近在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是一个对照对文件,努力点手动加一下; 1 楼 mawt 2008-03-17   楼主人不错
st.map是个怎么样的格式,贴出来看看 2 楼 Jatula 2008-03-18   什么格式不重要,能读出来就行;

业業
丛叢

这种格式; 3 楼 freecode 2008-03-22   按你的格式写,还是输出“叢叢叢叢” 4 楼 Jatula 2008-03-23   不可能吧,建一个名为st.map文件;
里面写入:
业業
丛叢
保存就OK了;
注意目录
URL mapf = TrandtionalToSimplified.class.getResource("st.map");

热点排行