JAVA 中文转拼音
发布时间:2020-12-15 03:18:46 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 import java.io.UnsupportedEncodingException;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.Set;import org.apache.
以下代码由PHP站长网 52php.cn收集自互联网 现在PHP站长网小编把它分享给大家,仅供参考 import java.io.UnsupportedEncodingException; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Set; import org.apache.log4j.Logger; /** * 将中文转化为拼音 * * @author admin * */ public class Cn2Spell { private static Logger log = Logger.getLogger("UtilLog"); private static LinkedHashMap<String,Integer> spellMap = null; private static LinkedHashMap<String,Integer> otherSpellMap = null; private Cn2Spell() { } static { if (spellMap == null) { spellMap = new LinkedHashMap<String,Integer>(400); } if (otherSpellMap == null) { otherSpellMap = new LinkedHashMap<String,Integer>(100); } initialize(); log.info("Chinese transfer Spell Done."); } private static void spellPut(String spell,int ascii) { spellMap.put(spell,new Integer(ascii)); } private static void otherSpellPut(String spell,int ascii) { otherSpellMap.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); otherSpellPut("a-1",-7996); otherSpellPut("a-2",-4167); otherSpellPut("a-3",-31359); otherSpellPut("ai-1",-5054); otherSpellPut("bo-1",-8029); otherSpellPut("rui-1",-4445); otherSpellPut("yan-1",-5145); } /** * 获得单个汉字的Ascii. * * @param cn * - char 汉字字符 * @return int 错误返回 0,否则返回ascii */ public static int getCnAscii(char cn) { byte[] bytes = null; try { bytes = (String.valueOf(cn)).getBytes("GBK"); } catch (UnsupportedEncodingException ex) { } if (bytes == null || bytes.length > 2 || bytes.length <= 0) { // 错误 log.info("转换时发生错误!!"); return 0; } if (bytes.length == 1) { // 英文字符 log.info("/"" + cn + "/"是英文字符,其 ASCII 为:" + bytes[0]); return bytes[0]; } if (bytes.length == 2) { // 中文字符 int hightByte = 256 + bytes[0]; int lowByte = 256 + bytes[1]; int ascii = (256 * hightByte + lowByte) - 256 * 256; log.info("/"" + cn + "/"的 ASCII 为 : " + ascii); return ascii; } log.info("转换时发生错误!!"); 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) { // 其他的字符 Iterator<String> oit = otherSpellMap.keySet().iterator(); while (oit.hasNext()) { String otherSpell = (String) oit.next(); Object otherValObj = otherSpellMap.get(otherSpell); if (otherValObj instanceof Integer) { if (ascii == ((Integer) otherValObj).intValue()) { log.info("此时的拼音为:" + otherSpell); return otherSpell.split("-")[0]; } } } log.info("无法识别,可手动添加。/n在添加之前强行将此字符拼音定义为z"); return "z"; } Set<String> keySet = spellMap.keySet(); Iterator<String> 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) { // 区间找到 log.info("此时的拼音为:" + spell + "/n其对应的区间起始数字为:" + asciiRang0 + "/n上一个拼音为:" + spell0 + "/n即字符对应拼音应为:" + spell0); return (spell0 == null) ? spell : spell0; } else { spell0 = spell; asciiRang0 = asciiRang; // log.info("此时的拼音为:" + spell + "/n其对应的区间起始数字为:" + // asciiRang0); } } } return null; } /** * 判断是否是字母 * * @param ascii * - int 字符对应的ASCII * @return boolean 返回是否是字母的结果 */ @SuppressWarnings("unused") private static boolean isAlphabet(int ascii) { if (ascii > 0 && ascii < 160) { return true; } else { return false; } } /** * 返回字符串的全拼,是汉字转化为全拼,其它字符不进行转换 * * @param cnStr * - String 字符串 * @return String 转换成全拼后的字符串 */ public static String getFullSpell(String cnStr) { if (null == cnStr || "".equals(cnStr.trim())) { return cnStr; } // boolean isChinese = false; char[] chars = cnStr.toCharArray(); StringBuffer retuBuf = new StringBuffer(); StringBuffer resultBuf = 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 { log.info(chars[i] + "的拼音为:" + spell); retuBuf.append(spell); } // if (!isAlphabet(ascii)) { // isChinese = true; // // retuBuf.append(" "); // } } // end of if ascii <= -20400 } // if (isChinese) { // // resultBuf.append(cnStr); // // resultBuf.append(""); // resultBuf.append(retuBuf.toString()); // } else { // resultBuf.append(retuBuf.toString()); // } resultBuf.append(retuBuf.toString()); return resultBuf.toString(); } public static String getFirstSpell(String cnStr) { return null; } public static void main(String[] args) { String str = null; try { str = new String("你好呀".getBytes(),"UTF-8"); } catch (UnsupportedEncodingException ex) { } System.out.println("/"" + str + "/"的拼音为:" + Cn2Spell.getFullSpell(str)); } } 以上内容由PHP站长网【52php.cn】收集整理供大家参考研究 如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |