欢迎光临
我们一直在努力

用Java转化汉字为拼音全拼-JSP教程,Java技巧及代码

建站超值云服务器,限时71元/月

package com.easydozer.commons.util;

import java.util.iterator;

import java.util.linkedhashmap;

import java.util.set;

/**

* <pre>汉字转化为全拼</pre>

* <br><dl><dt><b>jdk版本:</b></dt><br><dd>1.4</dd></dl>

* @author 谢计生

* @version 1.0

* @see

* @since 1.0

*/

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()

{

}

private static void spellput(string spell,int ascii)

{

spellmap.put(spell,new integer(ascii));

}

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);

}

/**

* 获得单个汉字的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;

//system.out.println("ascii=" + ascii);

return ascii;

}

return 0; //错误

}

/**

* 根据ascii码到spellmap中查找对应的拼音

* @param ascii int

* 字符对应的ascii

* @return string

* 拼音,首先判断ascii是否>0&<160,如果是返回对应的字符,

* <br>否则到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;

}

/**

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

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

}

public static string getfirstspell(string cnstr)

{

return null;

}

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));

}

}

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 用Java转化汉字为拼音全拼-JSP教程,Java技巧及代码
分享到: 更多 (0)

相关推荐

  • 暂无文章