java汉字转拼音和oracle汉字转拼音

import   java.util.Iterator;  
  import   java.util.LinkedHashMap;  
  import   java.util.Set;  
   
  /**  
    *  
    汉字转化为全拼  
    *  
    JDK版本:   1.4  
  */  
  public   class   HanziToPingtin   {  
          private   static   LinkedHashMap   spellMap   =   null;  
   
          static   {  
                  if   (spellMap   ==   null)   {  
                          spellMap   =   new   LinkedHashMap(400);  
                  }  
                  initialize();  
                  System.out.println("Chinese   transfer   Spell   Done.");  
          }  
   
          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,如果是返回对应的字符,  
            *  
            否则到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   =   "高兴";  
                  System.out.println("Spell="   +   HanziToPingtin.getFullSpell(str));     }  
  }  
   

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值