您的位置:首页 > 编程语言 > Java开发

JAVA将汉字转化成拼音的方法

2008-01-02 22:25 519 查看



/** *//**


#############################################################################


# DESCRIBE 将汉字转化成拼音


# DATE 2006-7-12


# COMPANY FLX


# PORJECT JAVA


#############################################################################


*/


import java.util.Iterator;


import java.util.LinkedHashMap;


import java.util.Set;






public class CnToSpell ...{


private static LinkedHashMap spellMap = null;






static ...{




if (spellMap == null) ...{


spellMap = new LinkedHashMap(400);


}


initialize();


System.out.println("Chinese transfer Spell Done.");


}






private CnToSpell() ...{


}






/** *//** *//** *//**


* 获得单个汉字的Ascii.


* @param cn char


* 汉字字符


* @return int


* 错误返回 0,否则返回ascii


*/




public static int getCnAscii(char cn) ...{


byte[] bytes = (String.valueOf(cn)).getBytes();




if (bytes == null || bytes.length > 2 || bytes.length <= 0) ...{ //错误


return 0;


}




if (bytes.length == 1) ...{ //英文字符


return bytes[0];


}




if (bytes.length == 2) ...{ //中文字符


int hightByte = 256 + bytes[0];


int lowByte = 256 + bytes[1];


int ascii = (256 * hightByte + lowByte) - 256 * 256;


return ascii;


}


return 0; //错误


}






/** *//** *//** *//**


* 返回字符串的全拼,是汉字转化为全拼,其它字符不进行转换


* @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();


}






/** *//** *//** *//**


* 根据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);


}






if (ascii < -20319 || ascii > -10247) ...{ //不知道的字符


return null;


}




Set keySet = spellMap.keySet();


Iterator it = keySet.iterator();




String spell0 = null;


;


String spell = null;




int asciiRang0 = -20319;


int asciiRang;




while (it.hasNext()) ...{




spell = (String) it.next();


Object valObj = spellMap.get(spell);




if (valObj instanceof Integer) ...{


asciiRang = ((Integer) valObj).intValue();






if (ascii >= asciiRang0 && ascii < asciiRang) ...{ //区间找到


return (spell0 == null) ? spell : spell0;




} else ...{


spell0 = spell;


asciiRang0 = asciiRang;


}


}


}




return null;




}






private static void initialize() ...{


spellPut("a", -20319);


spellPut("ai", -20317);


spellPut("an", -20304);


spellPut("ang", -20295);


spellPut("ao", -20292);


spellPut("ba", -20283);


spellPut("bai", -20265);


spellPut("ban", -20257);


spellPut("bang", -20242);


spellPut("bao", -20230);


spellPut("bei", -20051);


spellPut("ben", -20036);


spellPut("beng", -20032);


spellPut("bi", -20026);


spellPut("bian", -20002);


spellPut("biao", -19990);


spellPut("bie", -19986);


spellPut("bin", -19982);


spellPut("bing", -19976);


spellPut("bo", -19805);


spellPut("bu", -19784);


spellPut("ca", -19775);


spellPut("cai", -19774);


spellPut("can", -19763);


spellPut("cang", -19756);


spellPut("cao", -19751);


spellPut("ce", -19746);


spellPut("ceng", -19741);


spellPut("cha", -19739);


spellPut("chai", -19728);


spellPut("chan", -19725);


spellPut("chang", -19715);


spellPut("chao", -19540);


spellPut("che", -19531);


spellPut("chen", -19525);


spellPut("cheng", -19515);


spellPut("chi", -19500);


spellPut("chong", -19484);


spellPut("chou", -19479);


spellPut("chu", -19467);


spellPut("chuai", -19289);


spellPut("chuan", -19288);


spellPut("chuang", -19281);


spellPut("chui", -19275);


spellPut("chun", -19270);


spellPut("chuo", -19263);


spellPut("ci", -19261);


spellPut("cong", -19249);


spellPut("cou", -19243);


spellPut("cu", -19242);


spellPut("cuan", -19238);


spellPut("cui", -19235);


spellPut("cun", -19227);


spellPut("cuo", -19224);


spellPut("da", -19218);


spellPut("dai", -19212);


spellPut("dan", -19038);


spellPut("dang", -19023);


spellPut("dao", -19018);


spellPut("de", -19006);


spellPut("deng", -19003);


spellPut("di", -18996);


spellPut("dian", -18977);


spellPut("diao", -18961);


spellPut("die", -18952);


spellPut("ding", -18783);


spellPut("diu", -18774);


spellPut("dong", -18773);


spellPut("dou", -18763);


spellPut("du", -18756);


spellPut("duan", -18741);


spellPut("dui", -18735);


spellPut("dun", -18731);


spellPut("duo", -18722);


spellPut("e", -18710);


spellPut("en", -18697);


spellPut("er", -18696);


spellPut("fa", -18526);


spellPut("fan", -18518);


spellPut("fang", -18501);


spellPut("fei", -18490);


spellPut("fen", -18478);


spellPut("feng", -18463);


spellPut("fo", -18448);


spellPut("fou", -18447);


spellPut("fu", -18446);


spellPut("ga", -18239);


spellPut("gai", -18237);


spellPut("gan", -18231);


spellPut("gang", -18220);


spellPut("gao", -18211);


spellPut("ge", -18201);


spellPut("gei", -18184);


spellPut("gen", -18183);


spellPut("geng", -18181);


spellPut("gong", -18012);


spellPut("gou", -17997);


spellPut("gu", -17988);


spellPut("gua", -17970);


spellPut("guai", -17964);


spellPut("guan", -17961);


spellPut("guang", -17950);


spellPut("gui", -17947);


spellPut("gun", -17931);


spellPut("guo", -17928);


spellPut("ha", -17922);


spellPut("hai", -17759);


spellPut("han", -17752);


spellPut("hang", -17733);


spellPut("hao", -17730);


spellPut("he", -17721);


spellPut("hei", -17703);


spellPut("hen", -17701);


spellPut("heng", -17697);


spellPut("hong", -17692);


spellPut("hou", -17683);


spellPut("hu", -17676);


spellPut("hua", -17496);


spellPut("huai", -17487);


spellPut("huan", -17482);


spellPut("huang", -17468);


spellPut("hui", -17454);


spellPut("hun", -17433);


spellPut("huo", -17427);


spellPut("ji", -17417);


spellPut("jia", -17202);


spellPut("jian", -17185);


spellPut("jiang", -16983);


spellPut("jiao", -16970);


spellPut("jie", -16942);


spellPut("jin", -16915);


spellPut("jing", -16733);


spellPut("jiong", -16708);


spellPut("jiu", -16706);


spellPut("ju", -16689);


spellPut("juan", -16664);


spellPut("jue", -16657);


spellPut("jun", -16647);


spellPut("ka", -16474);


spellPut("kai", -16470);


spellPut("kan", -16465);


spellPut("kang", -16459);


spellPut("kao", -16452);


spellPut("ke", -16448);


spellPut("ken", -16433);


spellPut("keng", -16429);


spellPut("kong", -16427);


spellPut("kou", -16423);


spellPut("ku", -16419);


spellPut("kua", -16412);


spellPut("kuai", -16407);


spellPut("kuan", -16403);


spellPut("kuang", -16401);


spellPut("kui", -16393);


spellPut("kun", -16220);


spellPut("kuo", -16216);


spellPut("la", -16212);


spellPut("lai", -16205);


spellPut("lan", -16202);


spellPut("lang", -16187);


spellPut("lao", -16180);


spellPut("le", -16171);


spellPut("lei", -16169);


spellPut("leng", -16158);


spellPut("li", -16155);


spellPut("lia", -15959);


spellPut("lian", -15958);


spellPut("liang", -15944);


spellPut("liao", -15933);


spellPut("lie", -15920);


spellPut("lin", -15915);


spellPut("ling", -15903);


spellPut("liu", -15889);


spellPut("long", -15878);


spellPut("lou", -15707);


spellPut("lu", -15701);


spellPut("lv", -15681);


spellPut("luan", -15667);


spellPut("lue", -15661);


spellPut("lun", -15659);


spellPut("luo", -15652);


spellPut("ma", -15640);


spellPut("mai", -15631);


spellPut("man", -15625);


spellPut("mang", -15454);


spellPut("mao", -15448);


spellPut("me", -15436);


spellPut("mei", -15435);


spellPut("men", -15419);


spellPut("meng", -15416);


spellPut("mi", -15408);


spellPut("mian", -15394);


spellPut("miao", -15385);


spellPut("mie", -15377);


spellPut("min", -15375);


spellPut("ming", -15369);


spellPut("miu", -15363);


spellPut("mo", -15362);


spellPut("mou", -15183);


spellPut("mu", -15180);


spellPut("na", -15165);


spellPut("nai", -15158);


spellPut("nan", -15153);


spellPut("nang", -15150);


spellPut("nao", -15149);


spellPut("ne", -15144);


spellPut("nei", -15143);


spellPut("nen", -15141);


spellPut("neng", -15140);


spellPut("ni", -15139);


spellPut("nian", -15128);


spellPut("niang", -15121);


spellPut("niao", -15119);


spellPut("nie", -15117);


spellPut("nin", -15110);


spellPut("ning", -15109);


spellPut("niu", -14941);


spellPut("nong", -14937);


spellPut("nu", -14933);


spellPut("nv", -14930);


spellPut("nuan", -14929);


spellPut("nue", -14928);


spellPut("nuo", -14926);


spellPut("o", -14922);


spellPut("ou", -14921);


spellPut("pa", -14914);


spellPut("pai", -14908);


spellPut("pan", -14902);


spellPut("pang", -14894);


spellPut("pao", -14889);


spellPut("pei", -14882);


spellPut("pen", -14873);


spellPut("peng", -14871);


spellPut("pi", -14857);


spellPut("pian", -14678);


spellPut("piao", -14674);


spellPut("pie", -14670);


spellPut("pin", -14668);


spellPut("ping", -14663);


spellPut("po", -14654);


spellPut("pu", -14645);


spellPut("qi", -14630);


spellPut("qia", -14594);


spellPut("qian", -14429);


spellPut("qiang", -14407);


spellPut("qiao", -14399);


spellPut("qie", -14384);


spellPut("qin", -14379);


spellPut("qing", -14368);


spellPut("qiong", -14355);


spellPut("qiu", -14353);


spellPut("qu", -14345);


spellPut("quan", -14170);


spellPut("que", -14159);


spellPut("qun", -14151);


spellPut("ran", -14149);


spellPut("rang", -14145);


spellPut("rao", -14140);


spellPut("re", -14137);


spellPut("ren", -14135);


spellPut("reng", -14125);


spellPut("ri", -14123);


spellPut("rong", -14122);


spellPut("rou", -14112);


spellPut("ru", -14109);


spellPut("ruan", -14099);


spellPut("rui", -14097);


spellPut("run", -14094);


spellPut("ruo", -14092);


spellPut("sa", -14090);


spellPut("sai", -14087);


spellPut("san", -14083);


spellPut("sang", -13917);


spellPut("sao", -13914);


spellPut("se", -13910);


spellPut("sen", -13907);


spellPut("seng", -13906);


spellPut("sha", -13905);


spellPut("shai", -13896);


spellPut("shan", -13894);


spellPut("shang", -13878);


spellPut("shao", -13870);


spellPut("she", -13859);


spellPut("shen", -13847);


spellPut("sheng", -13831);


spellPut("shi", -13658);


spellPut("shou", -13611);


spellPut("shu", -13601);


spellPut("shua", -13406);


spellPut("shuai", -13404);


spellPut("shuan", -13400);


spellPut("shuang", -13398);


spellPut("shui", -13395);


spellPut("shun", -13391);


spellPut("shuo", -13387);


spellPut("si", -13383);


spellPut("song", -13367);


spellPut("sou", -13359);


spellPut("su", -13356);


spellPut("suan", -13343);


spellPut("sui", -13340);


spellPut("sun", -13329);


spellPut("suo", -13326);


spellPut("ta", -13318);


spellPut("tai", -13147);


spellPut("tan", -13138);


spellPut("tang", -13120);


spellPut("tao", -13107);


spellPut("te", -13096);


spellPut("teng", -13095);


spellPut("ti", -13091);


spellPut("tian", -13076);


spellPut("tiao", -13068);


spellPut("tie", -13063);


spellPut("ting", -13060);


spellPut("tong", -12888);


spellPut("tou", -12875);


spellPut("tu", -12871);


spellPut("tuan", -12860);


spellPut("tui", -12858);


spellPut("tun", -12852);


spellPut("tuo", -12849);


spellPut("wa", -12838);


spellPut("wai", -12831);


spellPut("wan", -12829);


spellPut("wang", -12812);


spellPut("wei", -12802);


spellPut("wen", -12607);


spellPut("weng", -12597);


spellPut("wo", -12594);


spellPut("wu", -12585);


spellPut("xi", -12556);


spellPut("xia", -12359);


spellPut("xian", -12346);


spellPut("xiang", -12320);


spellPut("xiao", -12300);


spellPut("xie", -12120);


spellPut("xin", -12099);


spellPut("xing", -12089);


spellPut("xiong", -12074);


spellPut("xiu", -12067);


spellPut("xu", -12058);


spellPut("xuan", -12039);


spellPut("xue", -11867);


spellPut("xun", -11861);


spellPut("ya", -11847);


spellPut("yan", -11831);


spellPut("yang", -11798);


spellPut("yao", -11781);


spellPut("ye", -11604);


spellPut("yi", -11589);


spellPut("yin", -11536);


spellPut("ying", -11358);


spellPut("yo", -11340);


spellPut("yong", -11339);


spellPut("you", -11324);


spellPut("yu", -11303);


spellPut("yuan", -11097);


spellPut("yue", -11077);


spellPut("yun", -11067);


spellPut("za", -11055);


spellPut("zai", -11052);


spellPut("zan", -11045);


spellPut("zang", -11041);


spellPut("zao", -11038);


spellPut("ze", -11024);


spellPut("zei", -11020);


spellPut("zen", -11019);


spellPut("zeng", -11018);


spellPut("zha", -11014);


spellPut("zhai", -10838);


spellPut("zhan", -10832);


spellPut("zhang", -10815);


spellPut("zhao", -10800);


spellPut("zhe", -10790);


spellPut("zhen", -10780);


spellPut("zheng", -10764);


spellPut("zhi", -10587);


spellPut("zhong", -10544);


spellPut("zhou", -10533);


spellPut("zhu", -10519);


spellPut("zhua", -10331);


spellPut("zhuai", -10329);


spellPut("zhuan", -10328);


spellPut("zhuang", -10322);


spellPut("zhui", -10315);


spellPut("zhun", -10309);


spellPut("zhuo", -10307);


spellPut("zi", -10296);


spellPut("zong", -10281);


spellPut("zou", -10274);


spellPut("zu", -10270);


spellPut("zuan", -10262);


spellPut("zui", -10260);


spellPut("zun", -10256);


spellPut("zuo", -10254);


}






public static void main(String[] args) ...{


String str = null;


str = "101普降喜雨";


System.out.println("Spell=" + CnToSpell.getFullSpell(str));




str = "张牙舞爪》。,";


System.out.println("Spell=" + CnToSpell.getFullSpell(str));




str = "啦啦,可耻下场。";


System.out.println("Spell=" + CnToSpell.getFullSpell(str));




str = "猪油,猪八戒。";


System.out.println("Spell=" + CnToSpell.getFullSpell(str));


}






private static void spellPut(String spell, int ascii) ...{


spellMap.put(spell, new Integer(ascii));


}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: