ChineseHelper.java 2.19 KB
package com.wugian.ping;

import java.io.FileNotFoundException;
import java.util.Map;
import java.util.Map.Entry;

public final class ChineseHelper {

    private static final String CHINESE_REGEX = "[\\u4e00-\\u9fa5]";
    private static final Map<String, String> CHINESE_MAP = PinyinResource.getChineseResource();

    private ChineseHelper() {
    }

    public static char convertToSimplifiedChinese(char c) {
        String simplifiedChinese = CHINESE_MAP.get(String.valueOf(c));
        if (simplifiedChinese != null) {
            return simplifiedChinese.charAt(0);
        }
        return c;
    }

    public static char convertToTraditionalChinese(char c) {
        String simplifiedChinese = String.valueOf(c);
        for (Entry<String, String> entry : CHINESE_MAP.entrySet()) {
            if (entry.getValue().equals(simplifiedChinese)) {
                return entry.getKey().charAt(0);
            }
        }

        return c;
    }

    public static String convertToSimplifiedChinese(String str) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0, len = str.length(); i < len; i++) {
            char c = str.charAt(i);
            sb.append(convertToSimplifiedChinese(c));
        }
        return sb.toString();
    }


    public static String convertToTraditionalChinese(String str) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0, len = str.length(); i < len; i++) {
            char c = str.charAt(i);
            sb.append(convertToTraditionalChinese(c));
        }
        return sb.toString();
    }

    public static boolean isTraditionalChinese(char c) {
        return CHINESE_MAP.containsKey(String.valueOf(c));
    }


    public static boolean isChinese(char c) {
        return String.valueOf(c).matches(CHINESE_REGEX);
    }


    public static boolean containsChinese(String str) {
        for (int i = 0, len = str.length(); i < len; i++) {
            if (isChinese(str.charAt(i))) {
                return true;
            }
        }
        return false;
    }

    public static void addChineseDict(String path) throws FileNotFoundException {
        CHINESE_MAP.putAll(PinyinResource.getResource(PinyinResource.newFileReader(path)));
    }
}