模仿九宫格拼音输入法,根据输入的数字键,形成对应的汉字拼音
package test; import java.util.HashMap; import java.util.Map; public class Pinyin9 { private static Map<String, String> numMap = new HashMap<String, String>(); private static Map<Integer, String> pinYinMap = new HashMap<Integer, String>(); //数字对应字母 static { numMap.put("2", "a,b,c"); numMap.put("3", "d,e,f"); numMap.put("4", "g,h,i"); numMap.put("5", "j,k,l"); numMap.put("6", "m,n,o"); numMap.put("7", "p,q,r,s"); numMap.put("8", "t,u,v"); numMap.put("9", "w,x,y,z"); } //列举所有的拼音组合 static { pinYinMap.put(-20319, "a"); pinYinMap.put(-20317, "ai"); pinYinMap.put(-20304, "an"); pinYinMap.put(-20295, "ang"); pinYinMap.put(-20292, "ao"); pinYinMap.put(-20283, "ba"); pinYinMap.put(-20265, "bai"); pinYinMap.put(-20257, "ban"); pinYinMap.put(-20242, "bang"); pinYinMap.put(-20230, "bao"); pinYinMap.put(-20051, "bei"); pinYinMap.put(-20036, "ben"); pinYinMap.put(-20032, "beng"); pinYinMap.put(-20026, "bi"); pinYinMap.put(-20002, "bian"); pinYinMap.put(-19990, "biao"); pinYinMap.put(-19986, "bie"); pinYinMap.put(-19982, "bin"); pinYinMap.put(-19976, "bing"); pinYinMap.put(-19805, "bo"); pinYinMap.put(-19784, "bu"); pinYinMap.put(-19775, "ca"); pinYinMap.put(-19774, "cai"); pinYinMap.put(-19763, "can"); pinYinMap.put(-19756, "cang"); pinYinMap.put(-19751, "cao"); pinYinMap.put(-19746, "ce"); pinYinMap.put(-19741, "ceng"); pinYinMap.put(-19739, "cha"); pinYinMap.put(-19728, "chai"); pinYinMap.put(-19725, "chan"); pinYinMap.put(-19715, "chang"); pinYinMap.put(-19540, "chao"); pinYinMap.put(-19531, "che"); pinYinMap.put(-19525, "chen"); pinYinMap.put(-19515, "cheng"); pinYinMap.put(-19500, "chi"); pinYinMap.put(-19484, "chong"); pinYinMap.put(-19479, "chou"); pinYinMap.put(-19467, "chu"); pinYinMap.put(-19289, "chuai"); pinYinMap.put(-19288, "chuan"); pinYinMap.put(-19281, "chuang"); pinYinMap.put(-19275, "chui"); pinYinMap.put(-19270, "chun"); pinYinMap.put(-19263, "chuo"); pinYinMap.put(-19261, "ci"); pinYinMap.put(-19249, "cong"); pinYinMap.put(-19243, "cou"); pinYinMap.put(-19242, "cu"); pinYinMap.put(-19238, "cuan"); pinYinMap.put(-19235, "cui"); pinYinMap.put(-19227, "cun"); pinYinMap.put(-19224, "cuo"); pinYinMap.put(-19218, "da"); pinYinMap.put(-19212, "dai"); pinYinMap.put(-19038, "dan"); pinYinMap.put(-19023, "dang"); pinYinMap.put(-19018, "dao"); pinYinMap.put(-19006, "de"); pinYinMap.put(-19003, "deng"); pinYinMap.put(-18996, "di"); pinYinMap.put(-18977, "dian"); pinYinMap.put(-18961, "diao"); pinYinMap.put(-18952, "die"); pinYinMap.put(-18783, "ding"); pinYinMap.put(-18774, "diu"); pinYinMap.put(-18773, "dong"); pinYinMap.put(-18763, "dou"); pinYinMap.put(-18756, "du"); pinYinMap.put(-18741, "duan"); pinYinMap.put(-18735, "dui"); pinYinMap.put(-18731, "dun"); pinYinMap.put(-18722, "duo"); pinYinMap.put(-18710, "e"); pinYinMap.put(-18697, "en"); pinYinMap.put(-18696, "er"); pinYinMap.put(-18526, "fa"); pinYinMap.put(-18518, "fan"); pinYinMap.put(-18501, "fang"); pinYinMap.put(-18490, "fei"); pinYinMap.put(-18478, "fen"); pinYinMap.put(-18463, "feng"); pinYinMap.put(-18448, "fo"); pinYinMap.put(-18447, "fou"); pinYinMap.put(-18446, "fu"); pinYinMap.put(-18239, "ga"); pinYinMap.put(-18237, "gai"); pinYinMap.put(-18231, "gan"); pinYinMap.put(-18220, "gang"); pinYinMap.put(-18211, "gao"); pinYinMap.put(-18201, "ge"); pinYinMap.put(-18184, "gei"); pinYinMap.put(-18183, "gen"); pinYinMap.put(-18181, "geng"); pinYinMap.put(-18012, "gong"); pinYinMap.put(-17997, "gou"); pinYinMap.put(-17988, "gu"); pinYinMap.put(-17970, "gua"); pinYinMap.put(-17964, "guai"); pinYinMap.put(-17961, "guan"); pinYinMap.put(-17950, "guang"); pinYinMap.put(-17947, "gui"); pinYinMap.put(-17931, "gun"); pinYinMap.put(-17928, "guo"); pinYinMap.put(-17922, "ha"); pinYinMap.put(-17759, "hai"); pinYinMap.put(-17752, "han"); pinYinMap.put(-17733, "hang"); pinYinMap.put(-17730, "hao"); pinYinMap.put(-17721, "he"); pinYinMap.put(-17703, "hei"); pinYinMap.put(-17701, "hen"); pinYinMap.put(-17697, "heng"); pinYinMap.put(-17692, "hong"); pinYinMap.put(-17683, "hou"); pinYinMap.put(-17676, "hu"); pinYinMap.put(-17496, "hua"); pinYinMap.put(-17487, "huai"); pinYinMap.put(-17482, "huan"); pinYinMap.put(-17468, "huang"); pinYinMap.put(-17454, "hui"); pinYinMap.put(-17433, "hun"); pinYinMap.put(-17427, "huo"); pinYinMap.put(-17417, "ji"); pinYinMap.put(-17202, "jia"); pinYinMap.put(-17185, "jian"); pinYinMap.put(-16983, "jiang"); pinYinMap.put(-16970, "jiao"); pinYinMap.put(-16942, "jie"); pinYinMap.put(-16915, "jin"); pinYinMap.put(-16733, "jing"); pinYinMap.put(-16708, "jiong"); pinYinMap.put(-16706, "jiu"); pinYinMap.put(-16689, "ju"); pinYinMap.put(-16664, "juan"); pinYinMap.put(-16657, "jue"); pinYinMap.put(-16647, "jun"); pinYinMap.put(-16474, "ka"); pinYinMap.put(-16470, "kai"); pinYinMap.put(-16465, "kan"); pinYinMap.put(-16459, "kang"); pinYinMap.put(-16452, "kao"); pinYinMap.put(-16448, "ke"); pinYinMap.put(-16433, "ken"); pinYinMap.put(-16429, "keng"); pinYinMap.put(-16427, "kong"); pinYinMap.put(-16423, "kou"); pinYinMap.put(-16419, "ku"); pinYinMap.put(-16412, "kua"); pinYinMap.put(-16407, "kuai"); pinYinMap.put(-16403, "kuan"); pinYinMap.put(-16401, "kuang"); pinYinMap.put(-16393, "kui"); pinYinMap.put(-16220, "kun"); pinYinMap.put(-16216, "kuo"); pinYinMap.put(-16212, "la"); pinYinMap.put(-16205, "lai"); pinYinMap.put(-16202, "lan"); pinYinMap.put(-16187, "lang"); pinYinMap.put(-16180, "lao"); pinYinMap.put(-16171, "le"); pinYinMap.put(-16169, "lei"); pinYinMap.put(-16158, "leng"); pinYinMap.put(-16155, "li"); pinYinMap.put(-15959, "lia"); pinYinMap.put(-15958, "lian"); pinYinMap.put(-15944, "liang"); pinYinMap.put(-15933, "liao"); pinYinMap.put(-15920, "lie"); pinYinMap.put(-15915, "lin"); pinYinMap.put(-15903, "ling"); pinYinMap.put(-15889, "liu"); pinYinMap.put(-15878, "long"); pinYinMap.put(-15707, "lou"); pinYinMap.put(-15701, "lu"); pinYinMap.put(-15681, "lv"); pinYinMap.put(-15667, "luan"); pinYinMap.put(-15661, "lue"); pinYinMap.put(-15659, "lun"); pinYinMap.put(-15652, "luo"); pinYinMap.put(-15640, "ma"); pinYinMap.put(-15631, "mai"); pinYinMap.put(-15625, "man"); pinYinMap.put(-15454, "mang"); pinYinMap.put(-15448, "mao"); pinYinMap.put(-15436, "me"); pinYinMap.put(-15435, "mei"); pinYinMap.put(-15419, "men"); pinYinMap.put(-15416, "meng"); pinYinMap.put(-15408, "mi"); pinYinMap.put(-15394, "mian"); pinYinMap.put(-15385, "miao"); pinYinMap.put(-15377, "mie"); pinYinMap.put(-15375, "min"); pinYinMap.put(-15369, "ming"); pinYinMap.put(-15363, "miu"); pinYinMap.put(-15362, "mo"); pinYinMap.put(-15183, "mou"); pinYinMap.put(-15180, "mu"); pinYinMap.put(-15165, "na"); pinYinMap.put(-15158, "nai"); pinYinMap.put(-15153, "nan"); pinYinMap.put(-15150, "nang"); pinYinMap.put(-15149, "nao"); pinYinMap.put(-15144, "ne"); pinYinMap.put(-15143, "nei"); pinYinMap.put(-15141, "nen"); pinYinMap.put(-15140, "neng"); pinYinMap.put(-15139, "ni"); pinYinMap.put(-15128, "nian"); pinYinMap.put(-15121, "niang"); pinYinMap.put(-15119, "niao"); pinYinMap.put(-15117, "nie"); pinYinMap.put(-15110, "nin"); pinYinMap.put(-15109, "ning"); pinYinMap.put(-14941, "niu"); pinYinMap.put(-14937, "nong"); pinYinMap.put(-14933, "nu"); pinYinMap.put(-14930, "nv"); pinYinMap.put(-14929, "nuan"); pinYinMap.put(-14928, "nue"); pinYinMap.put(-14926, "nuo"); pinYinMap.put(-14922, "o"); pinYinMap.put(-14921, "ou"); pinYinMap.put(-14914, "pa"); pinYinMap.put(-14908, "pai"); pinYinMap.put(-14902, "pan"); pinYinMap.put(-14894, "pang"); pinYinMap.put(-14889, "pao"); pinYinMap.put(-14882, "pei"); pinYinMap.put(-14873, "pen"); pinYinMap.put(-14871, "peng"); pinYinMap.put(-14857, "pi"); pinYinMap.put(-14678, "pian"); pinYinMap.put(-14674, "piao"); pinYinMap.put(-14670, "pie"); pinYinMap.put(-14668, "pin"); pinYinMap.put(-14663, "ping"); pinYinMap.put(-14654, "po"); pinYinMap.put(-14645, "pu"); pinYinMap.put(-14630, "qi"); pinYinMap.put(-14594, "qia"); pinYinMap.put(-14429, "qian"); pinYinMap.put(-14407, "qiang"); pinYinMap.put(-14399, "qiao"); pinYinMap.put(-14384, "qie"); pinYinMap.put(-14379, "qin"); pinYinMap.put(-14368, "qing"); pinYinMap.put(-14355, "qiong"); pinYinMap.put(-14353, "qiu"); pinYinMap.put(-14345, "qu"); pinYinMap.put(-14170, "quan"); pinYinMap.put(-14159, "que"); pinYinMap.put(-14151, "qun"); pinYinMap.put(-14149, "ran"); pinYinMap.put(-14145, "rang"); pinYinMap.put(-14140, "rao"); pinYinMap.put(-14137, "re"); pinYinMap.put(-14135, "ren"); pinYinMap.put(-14125, "reng"); pinYinMap.put(-14123, "ri"); pinYinMap.put(-14122, "rong"); pinYinMap.put(-14112, "rou"); pinYinMap.put(-14109, "ru"); pinYinMap.put(-14099, "ruan"); pinYinMap.put(-14097, "rui"); pinYinMap.put(-14094, "run"); pinYinMap.put(-14092, "ruo"); pinYinMap.put(-14090, "sa"); pinYinMap.put(-14087, "sai"); pinYinMap.put(-14083, "san"); pinYinMap.put(-13917, "sang"); pinYinMap.put(-13914, "sao"); pinYinMap.put(-13910, "se"); pinYinMap.put(-13907, "sen"); pinYinMap.put(-13906, "seng"); pinYinMap.put(-13905, "sha"); pinYinMap.put(-13896, "shai"); pinYinMap.put(-13894, "shan"); pinYinMap.put(-13878, "shang"); pinYinMap.put(-13870, "shao"); pinYinMap.put(-13859, "she"); pinYinMap.put(-13847, "shen"); pinYinMap.put(-13831, "sheng"); pinYinMap.put(-13658, "shi"); pinYinMap.put(-13611, "shou"); pinYinMap.put(-13601, "shu"); pinYinMap.put(-13406, "shua"); pinYinMap.put(-13404, "shuai"); pinYinMap.put(-13400, "shuan"); pinYinMap.put(-13398, "shuang"); pinYinMap.put(-13395, "shui"); pinYinMap.put(-13391, "shun"); pinYinMap.put(-13387, "shuo"); pinYinMap.put(-13383, "si"); pinYinMap.put(-13367, "song"); pinYinMap.put(-13359, "sou"); pinYinMap.put(-13356, "su"); pinYinMap.put(-13343, "suan"); pinYinMap.put(-13340, "sui"); pinYinMap.put(-13329, "sun"); pinYinMap.put(-13326, "suo"); pinYinMap.put(-13318, "ta"); pinYinMap.put(-13147, "tai"); pinYinMap.put(-13138, "tan"); pinYinMap.put(-13120, "tang"); pinYinMap.put(-13107, "tao"); pinYinMap.put(-13096, "te"); pinYinMap.put(-13095, "teng"); pinYinMap.put(-13091, "ti"); pinYinMap.put(-13076, "tian"); pinYinMap.put(-13068, "tiao"); pinYinMap.put(-13063, "tie"); pinYinMap.put(-13060, "ting"); pinYinMap.put(-12888, "tong"); pinYinMap.put(-12875, "tou"); pinYinMap.put(-12871, "tu"); pinYinMap.put(-12860, "tuan"); pinYinMap.put(-12858, "tui"); pinYinMap.put(-12852, "tun"); pinYinMap.put(-12849, "tuo"); pinYinMap.put(-12838, "wa"); pinYinMap.put(-12831, "wai"); pinYinMap.put(-12829, "wan"); pinYinMap.put(-12812, "wang"); pinYinMap.put(-12802, "wei"); pinYinMap.put(-12607, "wen"); pinYinMap.put(-12597, "weng"); pinYinMap.put(-12594, "wo"); pinYinMap.put(-12585, "wu"); pinYinMap.put(-12556, "xi"); pinYinMap.put(-12359, "xia"); pinYinMap.put(-12346, "xian"); pinYinMap.put(-12320, "xiang"); pinYinMap.put(-12300, "xiao"); pinYinMap.put(-12120, "xie"); pinYinMap.put(-12099, "xin"); pinYinMap.put(-12089, "xing"); pinYinMap.put(-12074, "xiong"); pinYinMap.put(-12067, "xiu"); pinYinMap.put(-12058, "xu"); pinYinMap.put(-12039, "xuan"); pinYinMap.put(-11867, "xue"); pinYinMap.put(-11861, "xun"); pinYinMap.put(-11847, "ya"); pinYinMap.put(-11831, "yan"); pinYinMap.put(-11798, "yang"); pinYinMap.put(-11781, "yao"); pinYinMap.put(-11604, "ye"); pinYinMap.put(-11589, "yi"); pinYinMap.put(-11536, "yin"); pinYinMap.put(-11358, "ying"); pinYinMap.put(-11340, "yo"); pinYinMap.put(-11339, "yong"); pinYinMap.put(-11324, "you"); pinYinMap.put(-11303, "yu"); pinYinMap.put(-11097, "yuan"); pinYinMap.put(-11077, "yue"); pinYinMap.put(-11067, "yun"); pinYinMap.put(-11055, "za"); pinYinMap.put(-11052, "zai"); pinYinMap.put(-11045, "zan"); pinYinMap.put(-11041, "zang"); pinYinMap.put(-11038, "zao"); pinYinMap.put(-11024, "ze"); pinYinMap.put(-11020, "zei"); pinYinMap.put(-11019, "zen"); pinYinMap.put(-11018, "zeng"); pinYinMap.put(-11014, "zha"); pinYinMap.put(-10838, "zhai"); pinYinMap.put(-10832, "zhan"); pinYinMap.put(-10815, "zhang"); pinYinMap.put(-10800, "zhao"); pinYinMap.put(-10790, "zhe"); pinYinMap.put(-10780, "zhen"); pinYinMap.put(-10764, "zheng"); pinYinMap.put(-10587, "zhi"); pinYinMap.put(-10544, "zhong"); pinYinMap.put(-10533, "zhou"); pinYinMap.put(-10519, "zhu"); pinYinMap.put(-10331, "zhua"); pinYinMap.put(-10329, "zhuai"); pinYinMap.put(-10328, "zhuan"); pinYinMap.put(-10322, "zhuang"); pinYinMap.put(-10315, "zhui"); pinYinMap.put(-10309, "zhun"); pinYinMap.put(-10307, "zhuo"); pinYinMap.put(-10296, "zi"); pinYinMap.put(-10281, "zong"); pinYinMap.put(-10274, "zou"); pinYinMap.put(-10270, "zu"); pinYinMap.put(-10262, "zuan"); pinYinMap.put(-10260, "zui"); pinYinMap.put(-10256, "zun"); pinYinMap.put(-10254, "zuo"); } public static String getComposite(int num) { StringBuffer sb = new StringBuffer(); String str = String.valueOf(num); if(str.contains("1") || str.contains("0")) { return "不能包含0或1"; } int len = str.length(); String[] temp = new String[len]; for(int i=0; i<len; i++) { temp[i] = numMap.get(String.valueOf(str.charAt(i))); } for(int i=0; i<len-1; i++) { temp[i+1] = compositeOfTwo(temp[i], temp[i+1]); } // sb.append(temp[len-1]);//输入字母的全部组合 //只输出正确表示汉字拼音的 String[] result = temp[len-1].split(","); for(int i=0; i<result.length; i++) { if(pinYinMap.containsValue(result[i])) { //过滤掉不是汉字拼音的 sb.append(result[i] + ","); } } if(sb.length()>0) { return sb.substring(0, sb.length()-1).toString(); }else { return "输入的不是汉字拼音,请重新输入!"; } } /** * 将两个带有,的字符串两两组合(如:"a,b,c","e,f,d") * @param str1 * @param str2 * @return ad,ae,af,bd,be,bf,cd,ce,cf */ public static String compositeOfTwo(String str1, String str2) { StringBuffer sb = new StringBuffer(); if(str1==null || str1.trim().equals("") || str2==null || str2.trim().equals("")) { return "空字符不能拼装"; } String[] temp1 = str1.split(","); String[] temp2 = str2.split(","); int length = temp1.length; for(int i=0; i<length; i++) { String s = temp1[i]; int len = temp2.length; for(int j=0; j<len; j++) { sb.append(s + temp2[j]); if(j!=len-1) { sb.append(","); } } if(i!=length-1) { sb.append(","); } } return sb.toString(); } public static void main(String[] args) { // System.out.println(compositeOfTwo("a,b,c", "e,f,d")); System.out.println(getComposite(926)); } }
转自:http://www.oschina.net/code/snippet_242764_50449
时刻怀有一颗虔诚之心,乐于分享。知识才更有意义。