加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java 汉字转化为拼音工具类

发布时间:2020-12-15 00:11:44 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 import java.nio.ByteBuffer;import java.util.TreeMap; /** * * 汉字转化为全拼 * * JDK版本: 6 * * 需要注意的是:这里面利用gb2312的编码规则,根

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

import java.nio.ByteBuffer;
import java.util.TreeMap;
 
/**
 *
 * 汉字转化为全拼
 *
 * JDK版本: 6
 *
 * 需要注意的是:这里面利用gb2312的编码规则,根据拼音区间来获取拼音,主要可以练习TreeMap的使用。
 * 但其实拼音规则涵盖的中文并不全面,要求较高的地方不建议使用这个类。 附上拼音和汉字对照表pinyin1.txt,可以利用这个文件建立Map。
 */
 
public class CharactorTool {
 
    private static TreeMap<Integer,String> spellTree = new TreeMap<Integer,String>();
 
    static {
        initTreeMap();
    }
 
    private CharactorTool() {
    }
 
    private static void initTreeMap() {
        spellTree.put(-20319,"a");
        spellTree.put(-20317,"ai");
        spellTree.put(-20304,"an");
        spellTree.put(-20295,"ang");
        spellTree.put(-20292,"ao");
        spellTree.put(-20283,"ba");
        spellTree.put(-20265,"bai");
        spellTree.put(-20257,"ban");
        spellTree.put(-20242,"bang");
        spellTree.put(-20230,"bao");
        spellTree.put(-20051,"bei");
        spellTree.put(-20036,"ben");
        spellTree.put(-20032,"beng");
        spellTree.put(-20026,"bi");
        spellTree.put(-20002,"bian");
        spellTree.put(-19990,"biao");
        spellTree.put(-19986,"bie");
        spellTree.put(-19982,"bin");
        spellTree.put(-19976,"bing");
        spellTree.put(-19805,"bo");
        spellTree.put(-19784,"bu");
        spellTree.put(-19775,"ca");
        spellTree.put(-19774,"cai");
        spellTree.put(-19763,"can");
        spellTree.put(-19756,"cang");
        spellTree.put(-19751,"cao");
        spellTree.put(-19746,"ce");
        spellTree.put(-19741,"ceng");
        spellTree.put(-19739,"cha");
        spellTree.put(-19728,"chai");
        spellTree.put(-19725,"chan");
        spellTree.put(-19715,"chang");
        spellTree.put(-19540,"chao");
        spellTree.put(-19531,"che");
        spellTree.put(-19525,"chen");
        spellTree.put(-19515,"cheng");
        spellTree.put(-19500,"chi");
        spellTree.put(-19484,"chong");
        spellTree.put(-19479,"chou");
        spellTree.put(-19467,"chu");
        spellTree.put(-19289,"chuai");
        spellTree.put(-19288,"chuan");
        spellTree.put(-19281,"chuang");
        spellTree.put(-19275,"chui");
        spellTree.put(-19270,"chun");
        spellTree.put(-19263,"chuo");
        spellTree.put(-19261,"ci");
        spellTree.put(-19249,"cong");
        spellTree.put(-19243,"cou");
        spellTree.put(-19242,"cu");
        spellTree.put(-19238,"cuan");
        spellTree.put(-19235,"cui");
        spellTree.put(-19227,"cun");
        spellTree.put(-19224,"cuo");
        spellTree.put(-19218,"da");
        spellTree.put(-19212,"dai");
        spellTree.put(-19038,"dan");
        spellTree.put(-19023,"dang");
        spellTree.put(-19018,"dao");
        spellTree.put(-19006,"de");
        spellTree.put(-19003,"deng");
        spellTree.put(-18996,"di");
        spellTree.put(-18977,"dian");
        spellTree.put(-18961,"diao");
        spellTree.put(-18952,"die");
        spellTree.put(-18783,"ding");
        spellTree.put(-18774,"diu");
        spellTree.put(-18773,"dong");
        spellTree.put(-18763,"dou");
        spellTree.put(-18756,"du");
        spellTree.put(-18741,"duan");
        spellTree.put(-18735,"dui");
        spellTree.put(-18731,"dun");
        spellTree.put(-18722,"duo");
        spellTree.put(-18710,"e");
        spellTree.put(-18697,"en");
        spellTree.put(-18696,"er");
        spellTree.put(-18526,"fa");
        spellTree.put(-18518,"fan");
        spellTree.put(-18501,"fang");
        spellTree.put(-18490,"fei");
        spellTree.put(-18478,"fen");
        spellTree.put(-18463,"feng");
        spellTree.put(-18448,"fo");
        spellTree.put(-18447,"fou");
        spellTree.put(-18446,"fu");
        spellTree.put(-18239,"ga");
        spellTree.put(-18237,"gai");
        spellTree.put(-18231,"gan");
        spellTree.put(-18220,"gang");
        spellTree.put(-18211,"gao");
        spellTree.put(-18201,"ge");
        spellTree.put(-18184,"gei");
        spellTree.put(-18183,"gen");
        spellTree.put(-18181,"geng");
        spellTree.put(-18012,"gong");
        spellTree.put(-17997,"gou");
        spellTree.put(-17988,"gu");
        spellTree.put(-17970,"gua");
        spellTree.put(-17964,"guai");
        spellTree.put(-17961,"guan");
        spellTree.put(-17950,"guang");
        spellTree.put(-17947,"gui");
        spellTree.put(-17931,"gun");
        spellTree.put(-17928,"guo");
        spellTree.put(-17922,"ha");
        spellTree.put(-17759,"hai");
        spellTree.put(-17752,"han");
        spellTree.put(-17733,"hang");
        spellTree.put(-17730,"hao");
        spellTree.put(-17721,"he");
        spellTree.put(-17703,"hei");
        spellTree.put(-17701,"hen");
        spellTree.put(-17697,"heng");
        spellTree.put(-17692,"hong");
        spellTree.put(-17683,"hou");
        spellTree.put(-17676,"hu");
        spellTree.put(-17496,"hua");
        spellTree.put(-17487,"huai");
        spellTree.put(-17482,"huan");
        spellTree.put(-17468,"huang");
        spellTree.put(-17454,"hui");
        spellTree.put(-17433,"hun");
        spellTree.put(-17427,"huo");
        spellTree.put(-17417,"ji");
        spellTree.put(-17202,"jia");
        spellTree.put(-17185,"jian");
        spellTree.put(-16983,"jiang");
        spellTree.put(-16970,"jiao");
        spellTree.put(-16942,"jie");
        spellTree.put(-16915,"jin");
        spellTree.put(-16733,"jing");
        spellTree.put(-16708,"jiong");
        spellTree.put(-16706,"jiu");
        spellTree.put(-16689,"ju");
        spellTree.put(-16664,"juan");
        spellTree.put(-16657,"jue");
        spellTree.put(-16647,"jun");
        spellTree.put(-16474,"ka");
        spellTree.put(-16470,"kai");
        spellTree.put(-16465,"kan");
        spellTree.put(-16459,"kang");
        spellTree.put(-16452,"kao");
        spellTree.put(-16448,"ke");
        spellTree.put(-16433,"ken");
        spellTree.put(-16429,"keng");
        spellTree.put(-16427,"kong");
        spellTree.put(-16423,"kou");
        spellTree.put(-16419,"ku");
        spellTree.put(-16412,"kua");
        spellTree.put(-16407,"kuai");
        spellTree.put(-16403,"kuan");
        spellTree.put(-16401,"kuang");
        spellTree.put(-16393,"kui");
        spellTree.put(-16220,"kun");
        spellTree.put(-16216,"kuo");
        spellTree.put(-16212,"la");
        spellTree.put(-16205,"lai");
        spellTree.put(-16202,"lan");
        spellTree.put(-16187,"lang");
        spellTree.put(-16180,"lao");
        spellTree.put(-16171,"le");
        spellTree.put(-16169,"lei");
        spellTree.put(-16158,"leng");
        spellTree.put(-16155,"li");
        spellTree.put(-15959,"lia");
        spellTree.put(-15958,"lian");
        spellTree.put(-15944,"liang");
        spellTree.put(-15933,"liao");
        spellTree.put(-15920,"lie");
        spellTree.put(-15915,"lin");
        spellTree.put(-15903,"ling");
        spellTree.put(-15889,"liu");
        spellTree.put(-15878,"long");
        spellTree.put(-15707,"lou");
        spellTree.put(-15701,"lu");
        spellTree.put(-15681,"lv");
        spellTree.put(-15667,"luan");
        spellTree.put(-15661,"lue");
        spellTree.put(-15659,"lun");
        spellTree.put(-15652,"luo");
        spellTree.put(-15640,"ma");
        spellTree.put(-15631,"mai");
        spellTree.put(-15625,"man");
        spellTree.put(-15454,"mang");
        spellTree.put(-15448,"mao");
        spellTree.put(-15436,"me");
        spellTree.put(-15435,"mei");
        spellTree.put(-15419,"men");
        spellTree.put(-15416,"meng");
        spellTree.put(-15408,"mi");
        spellTree.put(-15394,"mian");
        spellTree.put(-15385,"miao");
        spellTree.put(-15377,"mie");
        spellTree.put(-15375,"min");
        spellTree.put(-15369,"ming");
        spellTree.put(-15363,"miu");
        spellTree.put(-15362,"mo");
        spellTree.put(-15183,"mou");
        spellTree.put(-15180,"mu");
        spellTree.put(-15165,"na");
        spellTree.put(-15158,"nai");
        spellTree.put(-15153,"nan");
        spellTree.put(-15150,"nang");
        spellTree.put(-15149,"nao");
        spellTree.put(-15144,"ne");
        spellTree.put(-15143,"nei");
        spellTree.put(-15141,"nen");
        spellTree.put(-15140,"neng");
        spellTree.put(-15139,"ni");
        spellTree.put(-15128,"nian");
        spellTree.put(-15121,"niang");
        spellTree.put(-15119,"niao");
        spellTree.put(-15117,"nie");
        spellTree.put(-15110,"nin");
        spellTree.put(-15109,"ning");
        spellTree.put(-14941,"niu");
        spellTree.put(-14937,"nong");
        spellTree.put(-14933,"nu");
        spellTree.put(-14930,"nv");
        spellTree.put(-14929,"nuan");
        spellTree.put(-14928,"nue");
        spellTree.put(-14926,"nuo");
        spellTree.put(-14922,"o");
        spellTree.put(-14921,"ou");
        spellTree.put(-14914,"pa");
        spellTree.put(-14908,"pai");
        spellTree.put(-14902,"pan");
        spellTree.put(-14894,"pang");
        spellTree.put(-14889,"pao");
        spellTree.put(-14882,"pei");
        spellTree.put(-14873,"pen");
        spellTree.put(-14871,"peng");
        spellTree.put(-14857,"pi");
        spellTree.put(-14678,"pian");
        spellTree.put(-14674,"piao");
        spellTree.put(-14670,"pie");
        spellTree.put(-14668,"pin");
        spellTree.put(-14663,"ping");
        spellTree.put(-14654,"po");
        spellTree.put(-14645,"pu");
        spellTree.put(-14630,"qi");
        spellTree.put(-14594,"qia");
        spellTree.put(-14429,"qian");
        spellTree.put(-14407,"qiang");
        spellTree.put(-14399,"qiao");
        spellTree.put(-14384,"qie");
        spellTree.put(-14379,"qin");
        spellTree.put(-14368,"qing");
        spellTree.put(-14355,"qiong");
        spellTree.put(-14353,"qiu");
        spellTree.put(-14345,"qu");
        spellTree.put(-14170,"quan");
        spellTree.put(-14159,"que");
        spellTree.put(-14151,"qun");
        spellTree.put(-14149,"ran");
        spellTree.put(-14145,"rang");
        spellTree.put(-14140,"rao");
        spellTree.put(-14137,"re");
        spellTree.put(-14135,"ren");
        spellTree.put(-14125,"reng");
        spellTree.put(-14123,"ri");
        spellTree.put(-14122,"rong");
        spellTree.put(-14112,"rou");
        spellTree.put(-14109,"ru");
        spellTree.put(-14099,"ruan");
        spellTree.put(-14097,"rui");
        spellTree.put(-14094,"run");
        spellTree.put(-14092,"ruo");
        spellTree.put(-14090,"sa");
        spellTree.put(-14087,"sai");
        spellTree.put(-14083,"san");
        spellTree.put(-13917,"sang");
        spellTree.put(-13914,"sao");
        spellTree.put(-13910,"se");
        spellTree.put(-13907,"sen");
        spellTree.put(-13906,"seng");
        spellTree.put(-13905,"sha");
        spellTree.put(-13896,"shai");
        spellTree.put(-13894,"shan");
        spellTree.put(-13878,"shang");
        spellTree.put(-13870,"shao");
        spellTree.put(-13859,"she");
        spellTree.put(-13847,"shen");
        spellTree.put(-13831,"sheng");
        spellTree.put(-13658,"shi");
        spellTree.put(-13611,"shou");
        spellTree.put(-13601,"shu");
        spellTree.put(-13406,"shua");
        spellTree.put(-13404,"shuai");
        spellTree.put(-13400,"shuan");
        spellTree.put(-13398,"shuang");
        spellTree.put(-13395,"shui");
        spellTree.put(-13391,"shun");
        spellTree.put(-13387,"shuo");
        spellTree.put(-13383,"si");
        spellTree.put(-13367,"song");
        spellTree.put(-13359,"sou");
        spellTree.put(-13356,"su");
        spellTree.put(-13343,"suan");
        spellTree.put(-13340,"sui");
        spellTree.put(-13329,"sun");
        spellTree.put(-13326,"suo");
        spellTree.put(-13318,"ta");
        spellTree.put(-13147,"tai");
        spellTree.put(-13138,"tan");
        spellTree.put(-13120,"tang");
        spellTree.put(-13107,"tao");
        spellTree.put(-13096,"te");
        spellTree.put(-13095,"teng");
        spellTree.put(-13091,"ti");
        spellTree.put(-13076,"tian");
        spellTree.put(-13068,"tiao");
        spellTree.put(-13063,"tie");
        spellTree.put(-13060,"ting");
        spellTree.put(-12888,"tong");
        spellTree.put(-12875,"tou");
        spellTree.put(-12871,"tu");
        spellTree.put(-12860,"tuan");
        spellTree.put(-12858,"tui");
        spellTree.put(-12852,"tun");
        spellTree.put(-12849,"tuo");
        spellTree.put(-12838,"wa");
        spellTree.put(-12831,"wai");
        spellTree.put(-12829,"wan");
        spellTree.put(-12812,"wang");
        spellTree.put(-12802,"wei");
        spellTree.put(-12607,"wen");
        spellTree.put(-12597,"weng");
        spellTree.put(-12594,"wo");
        spellTree.put(-12585,"wu");
        spellTree.put(-12556,"xi");
        spellTree.put(-12359,"xia");
        spellTree.put(-12346,"xian");
        spellTree.put(-12320,"xiang");
        spellTree.put(-12300,"xiao");
        spellTree.put(-12120,"xie");
        spellTree.put(-12099,"xin");
        spellTree.put(-12089,"xing");
        spellTree.put(-12074,"xiong");
        spellTree.put(-12067,"xiu");
        spellTree.put(-12058,"xu");
        spellTree.put(-12039,"xuan");
        spellTree.put(-11867,"xue");
        spellTree.put(-11861,"xun");
        spellTree.put(-11847,"ya");
        spellTree.put(-11831,"yan");
        spellTree.put(-11798,"yang");
        spellTree.put(-11781,"yao");
        spellTree.put(-11604,"ye");
        spellTree.put(-11589,"yi");
        spellTree.put(-11536,"yin");
        spellTree.put(-11358,"ying");
        spellTree.put(-11340,"yo");
        spellTree.put(-11339,"yong");
        spellTree.put(-11324,"you");
        spellTree.put(-11303,"yu");
        spellTree.put(-11097,"yuan");
        spellTree.put(-11077,"yue");
        spellTree.put(-11067,"yun");
        spellTree.put(-11055,"za");
        spellTree.put(-11052,"zai");
        spellTree.put(-11045,"zan");
        spellTree.put(-11041,"zang");
        spellTree.put(-11038,"zao");
        spellTree.put(-11024,"ze");
        spellTree.put(-11020,"zei");
        spellTree.put(-11019,"zen");
        spellTree.put(-11018,"zeng");
        spellTree.put(-11014,"zha");
        spellTree.put(-10838,"zhai");
        spellTree.put(-10832,"zhan");
        spellTree.put(-10815,"zhang");
        spellTree.put(-10800,"zhao");
        spellTree.put(-10790,"zhe");
        spellTree.put(-10780,"zhen");
        spellTree.put(-10764,"zheng");
        spellTree.put(-10587,"zhi");
        spellTree.put(-10544,"zhong");
        spellTree.put(-10533,"zhou");
        spellTree.put(-10519,"zhu");
        spellTree.put(-10331,"zhua");
        spellTree.put(-10329,"zhuai");
        spellTree.put(-10328,"zhuan");
        spellTree.put(-10322,"zhuang");
        spellTree.put(-10315,"zhui");
        spellTree.put(-10309,"zhun");
        spellTree.put(-10307,"zhuo");
        spellTree.put(-10296,"zi");
        spellTree.put(-10281,"zong");
        spellTree.put(-10274,"zou");
        spellTree.put(-10270,"zu");
        spellTree.put(-10262,"zuan");
        spellTree.put(-10260,"zui");
        spellTree.put(-10256,"zun");
        spellTree.put(-10254,"zuo");
    }
 
    /**
     * 获得单个汉字的Ascii.
     *
     * @param cn
     *            char 汉字字符
     * @return int 错误返回 0,否则返回ascii
     */
    public static int getCnAscii(char cn) {
        try {
            byte[] bytes = (String.valueOf(cn)).getBytes("gb2312");
            if (bytes == null || bytes.length > 2 || bytes.length <= 0) { // 错误
                return 0;
            }
            if (bytes.length == 1) { // 英文字符
                return bytes[0];
            }
            if (bytes.length == 2) { // 中文字符
                ByteBuffer bf = ByteBuffer.wrap(bytes);
                return bf.getShort();
            }
        } catch (Exception e) {
        }
 
        return 0; // 错误
    }
 
    /**
     * 根据ASCII码到SpellMap中查找对应的拼音
     *
     * @param ascii
     *            int 字符对应的ASCII
     * @return String 拼音,首先判断ASCII是否>0&<160,如果是返回对应的字符,*
     *         否则到SpellMap中查找,如果没有找到拼音,则返回null,如果找到则返回拼音.
     */
    public static String getSpellByAscii(int ascii) {
        if (ascii > 0 && ascii < 160) { // 单字符
            return String.valueOf((char) ascii);
        } else if (ascii < -20319 || ascii > -10247) { // 不知道的字符
            return null;
        }
        Integer key = spellTree.floorKey(ascii);
        if (key != null) {
            return spellTree.get(key);
        }
        return null;
 
    }
 
    /**
     * 返回字符串的全拼,是汉字转化为全拼,其它字符不进行转换
     *
     * @param cnStr
     *            String 字符串
     * @return String 转换成全拼后的字符串
     */
    public static String getFullSpell(String cnStr) {
        if (null == cnStr || "".equals(cnStr.trim())) {
            return cnStr;
        }
        char[] chars = cnStr.toCharArray();
        StringBuffer retuBuf = new StringBuffer();
        for (int i = 0,Len = chars.length; i < Len; i++) {
            int ascii = getCnAscii(chars[i]);
            if (ascii == 0) { // 取ascii时出错
                retuBuf.append(chars[i]);
            } else {
                String spell = getSpellByAscii(ascii);
                if (spell == null) {
                    retuBuf.append(chars[i]);
                } else {
                    retuBuf.append(spell);
                } // end of if spell == null
            } // end of if ascii <= -20400
        } // end of for
 
        return retuBuf.toString();
    }
 
    /**
     * 返回字符串的拼音的首字母,其它字符不进行转换
     *
     * @param cnStr
     *            String 字符串
     * @return String 转换成全拼后的字符串的首字母
     */
    public static String getFirstSpell(String cnStr) {
        if (cnStr.substring(0,1).equals("沣"))
            return "f";
        if (cnStr.substring(0,1).equals("骊"))
            return "l";
        if (cnStr.substring(0,1).equals("杈"))
            return "c";
        if (cnStr.substring(0,1).equals("阿"))
            return "e";
        if (cnStr.substring(0,1).equals("怡"))
            return "y";
        if (cnStr.substring(0,1).equals("灞"))
            return "b";
        else
            return getFullSpell(cnStr).substring(0,1);
    }
 
    /**
     * 返回字符串每个中文的首字母集合,其他字符不进行转换
     *
     * @param cnStr
     *            转换字符串
     * @return String 每个中文首字母的字符串
     */
    public static String getEveryFirstSpell(String cnStr) {
        String result = "";
        for (int i = 0; i < cnStr.length(); i++) {
            result += getFirstSpell(cnStr.substring(i,i + 1));
        }
        return result;
    }
 
    public static void main(String[] args) {
        String s = "号码百事通";
        System.out.println(getFullSpell(s));
 
    }
}

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读