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】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |