Java获取汉字全拼和首拼

来源:互联网 发布:批量修改图片格式软件 编辑:程序博客网 时间:2024/05/02 00:46
  1. import java.util.Collections;   
  2. import java.util.Iterator;   
  3. import java.util.LinkedHashMap;   
  4. import java.util.Map;   
  5.   
  6. /**  
  7.  * 将汉字转化为全拼  
  8.  */  
  9. public class CnToSpell1 {   
  10.   
  11.     private static Map<String, Integer> spellMap = null;   
  12.     //存放生僻字和其拼音的Map   
  13.     private static Map<Character, String> uncommonWordsMap = null;   
  14.   
  15.     static {   
  16.         if (spellMap == null) {   
  17.             spellMap = Collections.synchronizedMap(new LinkedHashMap<String, Integer>(396)) ;   
  18.             uncommonWordsMap = Collections.synchronizedMap(new LinkedHashMap<Character, String>(200)) ;   
  19.         }   
  20.         initialize();   
  21.         initUncommonWords();    
  22.     }   
  23.   
  24.     private CnToSpell1() {}   
  25.   
  26.     /**  
  27.      * 初始化  
  28.      */  
  29.     private static void initialize() {   
  30.         spellMap.put("’a", -20319);   
  31.         spellMap.put("’ai", -20317);   
  32.         spellMap.put("’an", -20304);   
  33.         spellMap.put("’ang", -20295);   
  34.         spellMap.put("’ao", -20292);   
  35.         spellMap.put("ba", -20283);   
  36.         spellMap.put("bai", -20265);   
  37.         spellMap.put("ban", -20257);   
  38.         spellMap.put("bang", -20242);   
  39.         spellMap.put("bao", -20230);   
  40.         spellMap.put("bei", -20051);   
  41.         spellMap.put("ben", -20036);   
  42.         spellMap.put("beng", -20032);   
  43.         spellMap.put("bi", -20026);   
  44.         spellMap.put("bian", -20002);   
  45.         spellMap.put("biao", -19990);   
  46.         spellMap.put("bie", -19986);   
  47.         spellMap.put("bin", -19982);   
  48.         spellMap.put("bing", -19976);   
  49.         spellMap.put("bo", -19805);   
  50.         spellMap.put("bu", -19784);   
  51.         spellMap.put("ca", -19775);   
  52.         spellMap.put("cai", -19774);   
  53.         spellMap.put("can", -19763);   
  54.         spellMap.put("cang", -19756);   
  55.         spellMap.put("cao", -19751);   
  56.         spellMap.put("ce", -19746);   
  57.         spellMap.put("ceng", -19741);   
  58.         spellMap.put("cha", -19739);   
  59.         spellMap.put("chai", -19728);   
  60.         spellMap.put("chan", -19725);   
  61.         spellMap.put("chang", -19715);   
  62.         spellMap.put("chao", -19540);   
  63.         spellMap.put("che", -19531);   
  64.         spellMap.put("chen", -19525);   
  65.         spellMap.put("cheng", -19515);   
  66.         spellMap.put("chi", -19500);   
  67.         spellMap.put("chong", -19484);   
  68.         spellMap.put("chou", -19479);   
  69.         spellMap.put("chu", -19467);   
  70.         spellMap.put("chuai", -19289);   
  71.         spellMap.put("chuan", -19288);   
  72.         spellMap.put("chuang", -19281);   
  73.         spellMap.put("chui", -19275);   
  74.         spellMap.put("chun", -19270);   
  75.         spellMap.put("chuo", -19263);   
  76.         spellMap.put("ci", -19261);   
  77.         spellMap.put("cong", -19249);   
  78.         spellMap.put("cou", -19243);   
  79.         spellMap.put("cu", -19242);   
  80.         spellMap.put("cuan", -19238);   
  81.         spellMap.put("cui", -19235);   
  82.         spellMap.put("cun", -19227);   
  83.         spellMap.put("cuo", -19224);   
  84.         spellMap.put("da", -19218);   
  85.         spellMap.put("dai", -19212);   
  86.         spellMap.put("dan", -19038);   
  87.         spellMap.put("dang", -19023);   
  88.         spellMap.put("dao", -19018);   
  89.         spellMap.put("de", -19006);   
  90.         spellMap.put("deng", -19003);   
  91.         spellMap.put("di", -18996);   
  92.         spellMap.put("dian", -18977);   
  93.         spellMap.put("diao", -18961);   
  94.         spellMap.put("die", -18952);   
  95.         spellMap.put("ding", -18783);   
  96.         spellMap.put("diu", -18774);   
  97.         spellMap.put("dong", -18773);   
  98.         spellMap.put("dou", -18763);   
  99.         spellMap.put("du", -18756);   
  100.         spellMap.put("duan", -18741);   
  101.         spellMap.put("dui", -18735);   
  102.         spellMap.put("dun", -18731);   
  103.         spellMap.put("duo", -18722);   
  104.         spellMap.put("’e", -18710);   
  105.         spellMap.put("’en", -18697);   
  106.         spellMap.put("’er", -18696);   
  107.         spellMap.put("fa", -18526);   
  108.         spellMap.put("fan", -18518);   
  109.         spellMap.put("fang", -18501);   
  110.         spellMap.put("fei", -18490);   
  111.         spellMap.put("fen", -18478);   
  112.         spellMap.put("feng", -18463);   
  113.         spellMap.put("fo", -18448);   
  114.         spellMap.put("fou", -18447);   
  115.         spellMap.put("fu", -18446);   
  116.         spellMap.put("ga", -18239);   
  117.         spellMap.put("gai", -18237);   
  118.         spellMap.put("gan", -18231);   
  119.         spellMap.put("gang", -18220);   
  120.         spellMap.put("gao", -18211);   
  121.         spellMap.put("ge", -18201);   
  122.         spellMap.put("gei", -18184);   
  123.         spellMap.put("gen", -18183);   
  124.         spellMap.put("geng", -18181);   
  125.         spellMap.put("gong", -18012);   
  126.         spellMap.put("gou", -17997);   
  127.         spellMap.put("gu", -17988);   
  128.         spellMap.put("gua", -17970);   
  129.         spellMap.put("guai", -17964);   
  130.         spellMap.put("guan", -17961);   
  131.         spellMap.put("guang", -17950);   
  132.         spellMap.put("gui", -17947);   
  133.         spellMap.put("gun", -17931);   
  134.         spellMap.put("guo", -17928);   
  135.         spellMap.put("ha", -17922);   
  136.         spellMap.put("hai", -17759);   
  137.         spellMap.put("han", -17752);   
  138.         spellMap.put("hang", -17733);   
  139.         spellMap.put("hao", -17730);   
  140.         spellMap.put("he", -17721);   
  141.         spellMap.put("hei", -17703);   
  142.         spellMap.put("hen", -17701);   
  143.         spellMap.put("heng", -17697);   
  144.         spellMap.put("hong", -17692);   
  145.         spellMap.put("hou", -17683);   
  146.         spellMap.put("hu", -17676);   
  147.         spellMap.put("hua", -17496);   
  148.         spellMap.put("huai", -17487);   
  149.         spellMap.put("huan", -17482);   
  150.         spellMap.put("huang", -17468);   
  151.         spellMap.put("hui", -17454);   
  152.         spellMap.put("hun", -17433);   
  153.         spellMap.put("huo", -17427);   
  154.         spellMap.put("ji", -17417);   
  155.         spellMap.put("jia", -17202);   
  156.         spellMap.put("jian", -17185);   
  157.         spellMap.put("jiang", -16983);   
  158.         spellMap.put("jiao", -16970);   
  159.         spellMap.put("jie", -16942);   
  160.         spellMap.put("jin", -16915);   
  161.         spellMap.put("jing", -16733);   
  162.         spellMap.put("jiong", -16708);   
  163.         spellMap.put("jiu", -16706);   
  164.         spellMap.put("ju", -16689);   
  165.         spellMap.put("juan", -16664);   
  166.         spellMap.put("jue", -16657);   
  167.         spellMap.put("jun", -16647);   
  168.         spellMap.put("ka", -16474);   
  169.         spellMap.put("kai", -16470);   
  170.         spellMap.put("kan", -16465);   
  171.         spellMap.put("kang", -16459);   
  172.         spellMap.put("kao", -16452);   
  173.         spellMap.put("ke", -16448);   
  174.         spellMap.put("ken", -16433);   
  175.         spellMap.put("keng", -16429);   
  176.         spellMap.put("kong", -16427);   
  177.         spellMap.put("kou", -16423);   
  178.         spellMap.put("ku", -16419);   
  179.         spellMap.put("kua", -16412);   
  180.         spellMap.put("kuai", -16407);   
  181.         spellMap.put("kuan", -16403);   
  182.         spellMap.put("kuang", -16401);   
  183.         spellMap.put("kui", -16393);   
  184.         spellMap.put("kun", -16220);   
  185.         spellMap.put("kuo", -16216);   
  186.         spellMap.put("la", -16212);   
  187.         spellMap.put("lai", -16205);   
  188.         spellMap.put("lan", -16202);   
  189.         spellMap.put("lang", -16187);   
  190.         spellMap.put("lao", -16180);   
  191.         spellMap.put("le", -16171);   
  192.         spellMap.put("lei", -16169);   
  193.         spellMap.put("leng", -16158);   
  194.         spellMap.put("li", -16155);   
  195.         spellMap.put("lia", -15959);   
  196.         spellMap.put("lian", -15958);   
  197.         spellMap.put("liang", -15944);   
  198.         spellMap.put("liao", -15933);   
  199.         spellMap.put("lie", -15920);   
  200.         spellMap.put("lin", -15915);   
  201.         spellMap.put("ling", -15903);   
  202.         spellMap.put("liu", -15889);   
  203.         spellMap.put("long", -15878);   
  204.         spellMap.put("lou", -15707);   
  205.         spellMap.put("lu", -15701);   
  206.         spellMap.put("lv", -15681);   
  207.         spellMap.put("luan", -15667);   
  208.         spellMap.put("lue", -15661);   
  209.         spellMap.put("lun", -15659);   
  210.         spellMap.put("luo", -15652);   
  211.         spellMap.put("ma", -15640);   
  212.         spellMap.put("mai", -15631);   
  213.         spellMap.put("man", -15625);   
  214.         spellMap.put("mang", -15454);   
  215.         spellMap.put("mao", -15448);   
  216.         spellMap.put("me", -15436);   
  217.         spellMap.put("mei", -15435);   
  218.         spellMap.put("men", -15419);   
  219.         spellMap.put("meng", -15416);   
  220.         spellMap.put("mi", -15408);   
  221.         spellMap.put("mian", -15394);   
  222.         spellMap.put("miao", -15385);   
  223.         spellMap.put("mie", -15377);   
  224.         spellMap.put("min", -15375);   
  225.         spellMap.put("ming", -15369);   
  226.         spellMap.put("miu", -15363);   
  227.         spellMap.put("mo", -15362);   
  228.         spellMap.put("mou", -15183);   
  229.         spellMap.put("mu", -15180);   
  230.         spellMap.put("na", -15165);   
  231.         spellMap.put("nai", -15158);   
  232.         spellMap.put("nan", -15153);   
  233.         spellMap.put("nang", -15150);   
  234.         spellMap.put("nao", -15149);   
  235.         spellMap.put("ne", -15144);   
  236.         spellMap.put("nei", -15143);   
  237.         spellMap.put("nen", -15141);   
  238.         spellMap.put("neng", -15140);   
  239.         spellMap.put("ni", -15139);   
  240.         spellMap.put("nian", -15128);   
  241.         spellMap.put("niang", -15121);   
  242.         spellMap.put("niao", -15119);   
  243.         spellMap.put("nie", -15117);   
  244.         spellMap.put("nin", -15110);   
  245.         spellMap.put("ning", -15109);   
  246.         spellMap.put("niu", -14941);   
  247.         spellMap.put("nong", -14937);   
  248.         spellMap.put("nu", -14933);   
  249.         spellMap.put("nv", -14930);   
  250.         spellMap.put("nuan", -14929);   
  251.         spellMap.put("nue", -14928);   
  252.         spellMap.put("nuo", -14926);   
  253.         spellMap.put("’o", -14922);   
  254.         spellMap.put("’ou", -14921);   
  255.         spellMap.put("pa", -14914);   
  256.         spellMap.put("pai", -14908);   
  257.         spellMap.put("pan", -14902);   
  258.         spellMap.put("pang", -14894);   
  259.         spellMap.put("pao", -14889);   
  260.         spellMap.put("pei", -14882);   
  261.         spellMap.put("pen", -14873);   
  262.         spellMap.put("peng", -14871);   
  263.         spellMap.put("pi", -14857);   
  264.         spellMap.put("pian", -14678);   
  265.         spellMap.put("piao", -14674);   
  266.         spellMap.put("pie", -14670);   
  267.         spellMap.put("pin", -14668);   
  268.         spellMap.put("ping", -14663);   
  269.         spellMap.put("po", -14654);   
  270.         spellMap.put("pu", -14645);   
  271.         spellMap.put("qi", -14630);   
  272.         spellMap.put("qia", -14594);   
  273.         spellMap.put("qian", -14429);   
  274.         spellMap.put("qiang", -14407);   
  275.         spellMap.put("qiao", -14399);   
  276.         spellMap.put("qie", -14384);   
  277.         spellMap.put("qin", -14379);   
  278.         spellMap.put("qing", -14368);   
  279.         spellMap.put("qiong", -14355);   
  280.         spellMap.put("qiu", -14353);   
  281.         spellMap.put("qu", -14345);   
  282.         spellMap.put("quan", -14170);   
  283.         spellMap.put("que", -14159);   
  284.         spellMap.put("qun", -14151);   
  285.         spellMap.put("ran", -14149);   
  286.         spellMap.put("rang", -14145);   
  287.         spellMap.put("rao", -14140);   
  288.         spellMap.put("re", -14137);   
  289.         spellMap.put("ren", -14135);   
  290.         spellMap.put("reng", -14125);   
  291.         spellMap.put("ri", -14123);   
  292.         spellMap.put("rong", -14122);   
  293.         spellMap.put("rou", -14112);   
  294.         spellMap.put("ru", -14109);   
  295.         spellMap.put("ruan", -14099);   
  296.         spellMap.put("rui", -14097);   
  297.         spellMap.put("run", -14094);   
  298.         spellMap.put("ruo", -14092);   
  299.         spellMap.put("sa", -14090);   
  300.         spellMap.put("sai", -14087);   
  301.         spellMap.put("san", -14083);   
  302.         spellMap.put("sang", -13917);   
  303.         spellMap.put("sao", -13914);   
  304.         spellMap.put("se", -13910);   
  305.         spellMap.put("sen", -13907);   
  306.         spellMap.put("seng", -13906);   
  307.         spellMap.put("sha", -13905);   
  308.         spellMap.put("shai", -13896);   
  309.         spellMap.put("shan", -13894);   
  310.         spellMap.put("shang", -13878);   
  311.         spellMap.put("shao", -13870);   
  312.         spellMap.put("she", -13859);   
  313.         spellMap.put("shen", -13847);   
  314.         spellMap.put("sheng", -13831);   
  315.         spellMap.put("shi", -13658);   
  316.         spellMap.put("shou", -13611);   
  317.         spellMap.put("shu", -13601);   
  318.         spellMap.put("shua", -13406);   
  319.         spellMap.put("shuai", -13404);   
  320.         spellMap.put("shuan", -13400);   
  321.         spellMap.put("shuang", -13398);   
  322.         spellMap.put("shui", -13395);   
  323.         spellMap.put("shun", -13391);   
  324.         spellMap.put("shuo", -13387);   
  325.         spellMap.put("si", -13383);   
  326.         spellMap.put("song", -13367);   
  327.         spellMap.put("sou", -13359);   
  328.         spellMap.put("su", -13356);   
  329.         spellMap.put("suan", -13343);   
  330.         spellMap.put("sui", -13340);   
  331.         spellMap.put("sun", -13329);   
  332.         spellMap.put("suo", -13326);   
  333.         spellMap.put("ta", -13318);   
  334.         spellMap.put("tai", -13147);   
  335.         spellMap.put("tan", -13138);   
  336.         spellMap.put("tang", -13120);   
  337.         spellMap.put("tao", -13107);   
  338.         spellMap.put("te", -13096);   
  339.         spellMap.put("teng", -13095);   
  340.         spellMap.put("ti", -13091);   
  341.         spellMap.put("tian", -13076);   
  342.         spellMap.put("tiao", -13068);   
  343.         spellMap.put("tie", -13063);   
  344.         spellMap.put("ting", -13060);   
  345.         spellMap.put("tong", -12888);   
  346.         spellMap.put("tou", -12875);   
  347.         spellMap.put("tu", -12871);   
  348.         spellMap.put("tuan", -12860);   
  349.         spellMap.put("tui", -12858);   
  350.         spellMap.put("tun", -12852);   
  351.         spellMap.put("tuo", -12849);   
  352.         spellMap.put("wa", -12838);   
  353.         spellMap.put("wai", -12831);   
  354.         spellMap.put("wan", -12829);   
  355.         spellMap.put("wang", -12812);   
  356.         spellMap.put("wei", -12802);   
  357.         spellMap.put("wen", -12607);   
  358.         spellMap.put("weng", -12597);   
  359.         spellMap.put("wo", -12594);   
  360.         spellMap.put("wu", -12585);   
  361.         spellMap.put("xi", -12556);   
  362.         spellMap.put("xia", -12359);   
  363.         spellMap.put("xian", -12346);   
  364.         spellMap.put("xiang", -12320);   
  365.         spellMap.put("xiao", -12300);   
  366.         spellMap.put("xie", -12120);   
  367.         spellMap.put("xin", -12099);   
  368.         spellMap.put("xing", -12089);   
  369.         spellMap.put("xiong", -12074);   
  370.         spellMap.put("xiu", -12067);   
  371.         spellMap.put("xu", -12058);   
  372.         spellMap.put("xuan", -12039);   
  373.         spellMap.put("xue", -11867);   
  374.         spellMap.put("xun", -11861);   
  375.         spellMap.put("ya", -11847);   
  376.         spellMap.put("yan", -11831);   
  377.         spellMap.put("yang", -11798);   
  378.         spellMap.put("yao", -11781);   
  379.         spellMap.put("ye", -11604);   
  380.         spellMap.put("yi", -11589);   
  381.         spellMap.put("yin", -11536);   
  382.         spellMap.put("ying", -11358);   
  383.         spellMap.put("yo", -11340);   
  384.         spellMap.put("yong", -11339);   
  385.         spellMap.put("you", -11324);   
  386.         spellMap.put("yu", -11303);   
  387.         spellMap.put("yuan", -11097);   
  388.         spellMap.put("yue", -11077);   
  389.         spellMap.put("yun", -11067);   
  390.         spellMap.put("za", -11055);   
  391.         spellMap.put("zai", -11052);   
  392.         spellMap.put("zan", -11045);   
  393.         spellMap.put("zang", -11041);   
  394.         spellMap.put("zao", -11038);   
  395.         spellMap.put("ze", -11024);   
  396.         spellMap.put("zei", -11020);   
  397.         spellMap.put("zen", -11019);   
  398.         spellMap.put("zeng", -11018);   
  399.         spellMap.put("zha", -11014);   
  400.         spellMap.put("zhai", -10838);   
  401.         spellMap.put("zhan", -10832);   
  402.         spellMap.put("zhang", -10815);   
  403.         spellMap.put("zhao", -10800);   
  404.         spellMap.put("zhe", -10790);   
  405.         spellMap.put("zhen", -10780);   
  406.         spellMap.put("zheng", -10764);   
  407.         spellMap.put("zhi", -10587);   
  408.         spellMap.put("zhong", -10544);   
  409.         spellMap.put("zhou", -10533);   
  410.         spellMap.put("zhu", -10519);   
  411.         spellMap.put("zhua", -10331);   
  412.         spellMap.put("zhuai", -10329);   
  413.         spellMap.put("zhuan", -10328);   
  414.         spellMap.put("zhuang", -10322);   
  415.         spellMap.put("zhui", -10315);   
  416.         spellMap.put("zhun", -10309);   
  417.         spellMap.put("zhuo", -10307);   
  418.         spellMap.put("zi", -10296);   
  419.         spellMap.put("zong", -10281);   
  420.         spellMap.put("zou", -10274);   
  421.         spellMap.put("zu", -10270);   
  422.         spellMap.put("zuan", -10262);   
  423.         spellMap.put("zui", -10260);   
  424.         spellMap.put("zun", -10256);   
  425.         spellMap.put("zuo", -10254);   
  426.     }   
  427.   
  428.     /**  
  429.      * 添加生僻字  
  430.      * @param cnWord 生僻字  
  431.      * @param spell 生僻字的拼音, 如果拼音以 a, o ,e 开头, 请将开头分别改为 ’a, ’o, ’e, 如:安(’an)  
  432.      */  
  433.     public static void putUncommonWord(char cnWord, String spell){   
  434.         uncommonWordsMap.put(cnWord, spell);   
  435.     }   
  436.        
  437.     /**  
  438.      * 初始化生僻字  
  439.      */  
  440.     private static void initUncommonWords(){   
  441.         putUncommonWord('奡'"ao");   
  442.         putUncommonWord('灞'"ba");   
  443.         putUncommonWord('犇'"ben");   
  444.         putUncommonWord('猋'"biao");   
  445.         putUncommonWord('骉'"biao");   
  446.         putUncommonWord('杈'"cha");   
  447.         putUncommonWord('棽'"chen");   
  448.         putUncommonWord('琤'"cheng");   
  449.         putUncommonWord('魑'"chi");   
  450.         putUncommonWord('蟲'"chong");   
  451.         putUncommonWord('翀'"chong");   
  452.         putUncommonWord('麤'"cu");   
  453.         putUncommonWord('毳'"cui");   
  454.         putUncommonWord('昉'"fang");   
  455.         putUncommonWord('沣'"feng");   
  456.         putUncommonWord('玽'"gou");   
  457.         putUncommonWord('焓'"han");   
  458.         putUncommonWord('琀'"han");   
  459.         putUncommonWord('晗'"han");   
  460.         putUncommonWord('浛'"han");   
  461.         putUncommonWord('翮'"he");   
  462.         putUncommonWord('翯'"he");   
  463.         putUncommonWord('嬛'"huan");   
  464.         putUncommonWord('翙'"hui");   
  465.         putUncommonWord('劼'"jie");   
  466.         putUncommonWord('璟'"jing");   
  467.         putUncommonWord('誩'"jing");   
  468.         putUncommonWord('競'"jing");   
  469.         putUncommonWord('焜'"kun");   
  470.         putUncommonWord('琨'"kun");   
  471.         putUncommonWord('鹍'"kun");   
  472.         putUncommonWord('骊'"li");   
  473.         putUncommonWord('鎏'"liu");   
  474.         putUncommonWord('嫚'"man");   
  475.         putUncommonWord('槑'"mei");   
  476.         putUncommonWord('淼'"miao");   
  477.         putUncommonWord('婻'"nan");   
  478.         putUncommonWord('暔'"nan");   
  479.         putUncommonWord('甯'"ning");   
  480.         putUncommonWord('寗'"ning");   
  481.         putUncommonWord('掱'"pa");   
  482.         putUncommonWord('玭'"pi");   
  483.         putUncommonWord('汧'"qian");   
  484.         putUncommonWord('骎'"qin");   
  485.         putUncommonWord('甠'"qing");   
  486.         putUncommonWord('暒'"qing");   
  487.         putUncommonWord('凊'"qing");   
  488.         putUncommonWord('郬'"qing");   
  489.         putUncommonWord('靘'"qing");   
  490.         putUncommonWord('悫'"que");   
  491.         putUncommonWord('慤'"que");   
  492.         putUncommonWord('瑢'"rong");   
  493.         putUncommonWord('珅'"shen");   
  494.         putUncommonWord('屾'"shen");   
  495.         putUncommonWord('燊'"shen");   
  496.         putUncommonWord('焺'"sheng");   
  497.         putUncommonWord('珄'"sheng");   
  498.         putUncommonWord('晟'"sheng");   
  499.         putUncommonWord('昇'"sheng");   
  500.         putUncommonWord('眚'"sheng");   
  501.         putUncommonWord('湦'"sheng");   
  502.         putUncommonWord('陹'"sheng");   
  503.         putUncommonWord('竔'"sheng");   
  504.         putUncommonWord('琞'"sheng");   
  505.         putUncommonWord('湜'"shi");   
  506.         putUncommonWord('甦'"su");   
  507.         putUncommonWord('弢'"tao");   
  508.         putUncommonWord('瑱'"tian");   
  509.         putUncommonWord('仝'"tong");   
  510.         putUncommonWord('烓'"wei");   
  511.         putUncommonWord('炜'"wei");   
  512.         putUncommonWord('玮'"wei");   
  513.         putUncommonWord('沕'"wu");   
  514.         putUncommonWord('邬'"wu");   
  515.         putUncommonWord('晞'"xi");   
  516.         putUncommonWord('顕'"xian");   
  517.         putUncommonWord('婋'"xiao");   
  518.         putUncommonWord('虓'"xiao");   
  519.         putUncommonWord('筱'"xiao");   
  520.         putUncommonWord('勰'"xie");   
  521.         putUncommonWord('忻'"xin");   
  522.         putUncommonWord('庥'"xiu");   
  523.         putUncommonWord('媭'"xu");   
  524.         putUncommonWord('珝'"xu");   
  525.         putUncommonWord('昫'"xu");   
  526.         putUncommonWord('烜'"xuan");   
  527.         putUncommonWord('煊'"xuan");   
  528.         putUncommonWord('翾'"xuan");   
  529.         putUncommonWord('昍'"xuan");   
  530.         putUncommonWord('暄'"xuan");   
  531.         putUncommonWord('娅'"ya");   
  532.         putUncommonWord('琰'"yan");   
  533.         putUncommonWord('妍'"yan");   
  534.         putUncommonWord('焱'"yan");   
  535.         putUncommonWord('玚'"yang");   
  536.         putUncommonWord('旸'"yang");   
  537.         putUncommonWord('飏'"yang");   
  538.         putUncommonWord('垚'"yao");   
  539.         putUncommonWord('峣'"yao");   
  540.         putUncommonWord('怡'"yi");   
  541.         putUncommonWord('燚'"yi");   
  542.         putUncommonWord('晹'"yi");   
  543.         putUncommonWord('祎'"yi");   
  544.         putUncommonWord('瑛'"ying");   
  545.         putUncommonWord('煐'"ying");   
  546.         putUncommonWord('媖'"ying");   
  547.         putUncommonWord('暎'"ying");   
  548.         putUncommonWord('滢'"ying");   
  549.         putUncommonWord('锳'"ying");   
  550.         putUncommonWord('莜'"you");   
  551.         putUncommonWord('昱'"yu");   
  552.         putUncommonWord('沄'"yun");   
  553.         putUncommonWord('晢'"zhe");   
  554.         putUncommonWord('喆'"zhe");   
  555.         putUncommonWord('臸'"zhi");   
  556.     }   
  557.        
  558.     /**  
  559.      * 获得单个汉字的Ascii.  
  560.      * @param cn 汉字字符  
  561.      * @return 汉字对应的 ascii, 错误时返回 0  
  562.      */  
  563.     public static int getCnAscii(char cn) {   
  564.         byte[] bytes = (String.valueOf(cn)).getBytes();   
  565.         if (bytes == null || bytes.length == 0|| bytes.length > 2 ) { // 错误   
  566.             return 0;   
  567.         }   
  568.         if (bytes.length == 1) { // 英文字符   
  569.             return bytes[0];   
  570.         }   
  571.         if (bytes.length == 2) { // 中文字符   
  572.             int hightByte = 256 + bytes[0];   
  573.             int lowByte = 256 + bytes[1];   
  574.             return (256 * hightByte + lowByte) - 256 * 256//返回 ASCII   
  575.         }   
  576.         return 0// 错误   
  577.     }   
  578.   
  579.     /**  
  580.      * 根据ASCII码到SpellMap中查找对应的拼音  
  581.      * @param ascii ASCII  
  582.      * @return ascii对应的拼音, 如果ascii对应的字符为单字符,则返回对应的单字符, 如果不是单字符且在 spellMap 中没找到对应的拼音,则返回空字符串(""),   
  583.      */  
  584.     public static String getSpellByAscii(int ascii) {   
  585.         if (ascii > 0 && ascii < 160) { // 单字符   
  586.             return String.valueOf((char) ascii);   
  587.         }   
  588.   
  589.         if (ascii < -20319 || ascii > -10247) { // 不知道的字符   
  590.             return "";   
  591.         }   
  592.   
  593.         String spell = null//key   
  594.         Integer asciiRang; //value   
  595.         String spellPrevious = null//用来保存上次轮循环的key   
  596.         int asciiRangPrevious = -20319//用来保存上一次循环的value   
  597.         for (Iterator it = spellMap.keySet().iterator(); it.hasNext();) {   
  598.             spell = (String) it.next(); //拼音   
  599.             asciiRang = spellMap.get(spell); //拼音的ASCII   
  600.             if(asciiRang != null){   
  601.                 if (ascii >= asciiRangPrevious && ascii < asciiRang) { // 区间找到, 返回对应的拼音   
  602.                     return (spellPrevious == null) ? spell : spellPrevious;   
  603.                 } else {   
  604.                     spellPrevious = spell;   
  605.                     asciiRangPrevious = asciiRang;   
  606.                 }   
  607.             }   
  608.         }   
  609.         return "";   
  610.     }   
  611.   
  612.     /**  
  613.      * 获取字符串的全拼或首拼,是汉字则转化为对应的拼音或拼音首字母,其它字符不进行转换  
  614.      * @param cnStr 要获取全拼或首拼的字符串  
  615.      * @param onlyFirstSpell 是否只获取首拼,为true时,只获取首拼,为false时,获取全拼  
  616.      * @return String cnStr的全拼或首拼, 如果 cnStr 为null 时, 返回""  
  617.      */  
  618.     public static String getSpell(String cnStr, boolean onlyFirstSpell) {   
  619.         if (cnStr == null) {   
  620.             return "";   
  621.         }   
  622.            
  623.         char[] chars = cnStr.trim().toCharArray();   
  624.         StringBuffer sb = new StringBuffer();   
  625.         for (int i = 0, len = chars.length; i < len; i++) {   
  626.             int ascii = getCnAscii(chars[i]);   
  627.             if (ascii == 0){ //如果获取汉字的ASCII出错,则不进行转换   
  628.                 sb.append(chars[i]);   
  629.             }else{   
  630.                 String spell = getSpellByAscii(ascii); //根据ASCII取拼音   
  631.                 if(spell == null || spell.length() == 0){ //如果根据ASCII取拼音没取到,则到生僻字Map中取   
  632.                     spell = uncommonWordsMap.get(chars[i]);   
  633.                 }   
  634.                    
  635.                 if(spell == null || spell.length() == 0){ //如果没有取到对应的拼音,则不做转换,追加原字符   
  636.                     spell = uncommonWordsMap.get(chars[i]);   
  637.                 }else{   
  638.                     if(onlyFirstSpell){   
  639.                         sb.append(spell.startsWith("’") ? spell.substring(12) : spell.substring(01));   
  640.                     }else{   
  641.                         sb.append(spell);   
  642.                     }   
  643.                 }   
  644.             }   
  645.         } // end of for   
  646.         return sb.toString();   
  647.     }   
  648.   
  649.     public static void main(String[] args) {   
  650.         String[] s = {"获取汉字全拼和首拼测试","This is a test","a,b; c[d]","标,点。","圆角数字123,特殊符号·¥%——……""繁体字:西安會議""西安""棽 燊 顕 峣 山 "};   
  651.         for (int i = 0; i < s.length; i++) {   
  652.             long l1 = System.currentTimeMillis();   
  653.             System.out.println(s[i]+" 的全拼:" + getSpell(s[i], false));   
  654.             System.out.println(s[i]+" 的首拼:" + getSpell(s[i], true));   
  655.             System.out.println("获取全拼和首拼共用了"+(System.currentTimeMillis()-l1)+"毫秒/n");   
  656.         }   
  657.     }   
  658. }  
原创粉丝点击