Java获取汉字拼音的全拼和首拼实现代码分享_java

import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;  

/**
 * 将汉字转化为全拼
 */
public class CnToSpell1 {  

  private static Map<String, Integer> spellMap = null;
  //存放生僻字和其拼音的Map
  private static Map<Character, String> uncommonWordsMap = null;  

  static {
    if (spellMap == null) {
      spellMap = Collections.synchronizedMap(new LinkedHashMap<String, Integer>(396)) ;
      uncommonWordsMap = Collections.synchronizedMap(new LinkedHashMap<Character, String>(200)) ;
    }
    initialize();
    initUncommonWords();
  }  

  private CnToSpell1() {}  

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

  /**
   * 添加生僻字
   * @param cnWord 生僻字
   * @param spell 生僻字的拼音, 如果拼音以 a, o ,e 开头, 请将开头分别改为 'a, 'o, 'e, 如:安('an)
   */
  public static void putUncommonWord(char cnWord, String spell){
    uncommonWordsMap.put(cnWord, spell);
  }  

  /**
   * 初始化生僻字
   */
  private static void initUncommonWords(){
    putUncommonWord('奡', "ao");
    putUncommonWord('灞', "ba");
    putUncommonWord('犇', "ben");
    putUncommonWord('猋', "biao");
    putUncommonWord('骉', "biao");
    putUncommonWord('杈', "cha");
    putUncommonWord('棽', "chen");
    putUncommonWord('琤', "cheng");
    putUncommonWord('魑', "chi");
    putUncommonWord('蟲', "chong");
    putUncommonWord('翀', "chong");
    putUncommonWord('麤', "cu");
    putUncommonWord('毳', "cui");
    putUncommonWord('昉', "fang");
    putUncommonWord('沣', "feng");
    putUncommonWord('玽', "gou");
    putUncommonWord('焓', "han");
    putUncommonWord('琀', "han");
    putUncommonWord('晗', "han");
    putUncommonWord('浛', "han");
    putUncommonWord('翮', "he");
    putUncommonWord('翯', "he");
    putUncommonWord('嬛', "huan");
    putUncommonWord('翙', "hui");
    putUncommonWord('劼', "jie");
    putUncommonWord('璟', "jing");
    putUncommonWord('誩', "jing");
    putUncommonWord('競', "jing");
    putUncommonWord('焜', "kun");
    putUncommonWord('琨', "kun");
    putUncommonWord('鹍', "kun");
    putUncommonWord('骊', "li");
    putUncommonWord('鎏', "liu");
    putUncommonWord('嫚', "man");
    putUncommonWord('槑', "mei");
    putUncommonWord('淼', "miao");
    putUncommonWord('婻', "nan");
    putUncommonWord('暔', "nan");
    putUncommonWord('甯', "ning");
    putUncommonWord('寗', "ning");
    putUncommonWord('掱', "pa");
    putUncommonWord('玭', "pi");
    putUncommonWord('汧', "qian");
    putUncommonWord('骎', "qin");
    putUncommonWord('甠', "qing");
    putUncommonWord('暒', "qing");
    putUncommonWord('凊', "qing");
    putUncommonWord('郬', "qing");
    putUncommonWord('靘', "qing");
    putUncommonWord('悫', "que");
    putUncommonWord('慤', "que");
    putUncommonWord('瑢', "rong");
    putUncommonWord('珅', "shen");
    putUncommonWord('屾', "shen");
    putUncommonWord('燊', "shen");
    putUncommonWord('焺', "sheng");
    putUncommonWord('珄', "sheng");
    putUncommonWord('晟', "sheng");
    putUncommonWord('昇', "sheng");
    putUncommonWord('眚', "sheng");
    putUncommonWord('湦', "sheng");
    putUncommonWord('陹', "sheng");
    putUncommonWord('竔', "sheng");
    putUncommonWord('琞', "sheng");
    putUncommonWord('湜', "shi");
    putUncommonWord('甦', "su");
    putUncommonWord('弢', "tao");
    putUncommonWord('瑱', "tian");
    putUncommonWord('仝', "tong");
    putUncommonWord('烓', "wei");
    putUncommonWord('炜', "wei");
    putUncommonWord('玮', "wei");
    putUncommonWord('沕', "wu");
    putUncommonWord('邬', "wu");
    putUncommonWord('晞', "xi");
    putUncommonWord('顕', "xian");
    putUncommonWord('婋', "xiao");
    putUncommonWord('虓', "xiao");
    putUncommonWord('筱', "xiao");
    putUncommonWord('勰', "xie");
    putUncommonWord('忻', "xin");
    putUncommonWord('庥', "xiu");
    putUncommonWord('媭', "xu");
    putUncommonWord('珝', "xu");
    putUncommonWord('昫', "xu");
    putUncommonWord('烜', "xuan");
    putUncommonWord('煊', "xuan");
    putUncommonWord('翾', "xuan");
    putUncommonWord('昍', "xuan");
    putUncommonWord('暄', "xuan");
    putUncommonWord('娅', "ya");
    putUncommonWord('琰', "yan");
    putUncommonWord('妍', "yan");
    putUncommonWord('焱', "yan");
    putUncommonWord('玚', "yang");
    putUncommonWord('旸', "yang");
    putUncommonWord('飏', "yang");
    putUncommonWord('垚', "yao");
    putUncommonWord('峣', "yao");
    putUncommonWord('怡', "yi");
    putUncommonWord('燚', "yi");
    putUncommonWord('晹', "yi");
    putUncommonWord('祎', "yi");
    putUncommonWord('瑛', "ying");
    putUncommonWord('煐', "ying");
    putUncommonWord('媖', "ying");
    putUncommonWord('暎', "ying");
    putUncommonWord('滢', "ying");
    putUncommonWord('锳', "ying");
    putUncommonWord('莜', "you");
    putUncommonWord('昱', "yu");
    putUncommonWord('沄', "yun");
    putUncommonWord('晢', "zhe");
    putUncommonWord('喆', "zhe");
    putUncommonWord('臸', "zhi");
  }  

  /**
   * 获得单个汉字的Ascii.
   * @param cn 汉字字符
   * @return 汉字对应的 ascii, 错误时返回 0
   */
  public static int getCnAscii(char cn) {
    byte[] bytes = (String.valueOf(cn)).getBytes();
    if (bytes == null || bytes.length == 0|| bytes.length > 2 ) { // 错误
      return 0;
    }
    if (bytes.length == 1) { // 英文字符
      return bytes[0];
    }
    if (bytes.length == 2) { // 中文字符
      int hightByte = 256 + bytes[0];
      int lowByte = 256 + bytes[1];
      return (256 * hightByte + lowByte) - 256 * 256; //返回 ASCII
    }
    return 0; // 错误
  }  

  /**
   * 根据ASCII码到SpellMap中查找对应的拼音
   * @param ascii ASCII
   * @return ascii对应的拼音, 如果ascii对应的字符为单字符,则返回对应的单字符, 如果不是单字符且在 spellMap 中没找到对应的拼音,则返回空字符串(""),
   */
  public static String getSpellByAscii(int ascii) {
    if (ascii > 0 && ascii < 160) { // 单字符
      return String.valueOf((char) ascii);
    }  

    if (ascii < -20319 || ascii > -10247) { // 不知道的字符
      return "";
    }  

    String spell = null; //key
    Integer asciiRang; //value
    String spellPrevious = null; //用来保存上次轮循环的key
    int asciiRangPrevious = -20319; //用来保存上一次循环的value
    for (Iterator it = spellMap.keySet().iterator(); it.hasNext();) {
      spell = (String) it.next(); //拼音
      asciiRang = spellMap.get(spell); //拼音的ASCII
      if(asciiRang != null){
        if (ascii >= asciiRangPrevious && ascii < asciiRang) { // 区间找到, 返回对应的拼音
          return (spellPrevious == null) ? spell : spellPrevious;
        } else {
          spellPrevious = spell;
          asciiRangPrevious = asciiRang;
        }
      }
    }
    return "";
  }  

  /**
   * 获取字符串的全拼或首拼,是汉字则转化为对应的拼音或拼音首字母,其它字符不进行转换
   * @param cnStr 要获取全拼或首拼的字符串
   * @param onlyFirstSpell 是否只获取首拼,为true时,只获取首拼,为false时,获取全拼
   * @return String cnStr的全拼或首拼, 如果 cnStr 为null 时, 返回""
   */
  public static String getSpell(String cnStr, boolean onlyFirstSpell) {
    if (cnStr == null) {
      return "";
    }  

    char[] chars = cnStr.trim().toCharArray();
    StringBuffer sb = new StringBuffer();
    for (int i = 0, len = chars.length; i < len; i++) {
      int ascii = getCnAscii(chars[i]);
      if (ascii == 0){ //如果获取汉字的ASCII出错,则不进行转换
        sb.append(chars[i]);
      }else{
        String spell = getSpellByAscii(ascii); //根据ASCII取拼音
        if(spell == null || spell.length() == 0){ //如果根据ASCII取拼音没取到,则到生僻字Map中取
          spell = uncommonWordsMap.get(chars[i]);
        }  

        if(spell == null || spell.length() == 0){ //如果没有取到对应的拼音,则不做转换,追加原字符
          spell = uncommonWordsMap.get(chars[i]);
        }else{
          if(onlyFirstSpell){
            sb.append(spell.startsWith("'") ? spell.substring(1, 2) : spell.substring(0, 1));
          }else{
            sb.append(spell);
          }
        }
      }
    } // end of for
    return sb.toString();
  }  

  public static void main(String[] args) {
    String[] s = {"获取汉字全拼和首拼测试","This is a test","a,b; c[d]","标,点。","圆角数字123,特殊符号·¥%——……", "繁体字:西安會議", "西安", "棽 燊 顕 峣 山 "};
    for (int i = 0; i < s.length; i++) {
      long l1 = System.currentTimeMillis();
      System.out.println(s[i]+" 的全拼:" + getSpell(s[i], false));
      System.out.println(s[i]+" 的首拼:" + getSpell(s[i], true));
      System.out.println("获取全拼和首拼共用了"+(System.currentTimeMillis()-l1)+"毫秒/n");
    }
  }
} 

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, 汉字
, 拼音
, 全拼
首拼
拼音全拼、汉字转全拼、oracle汉字转全拼、全拼拼音输入法、php获取汉字全拼,以便于您获取更多的相关知识。

时间: 2024-09-22 07:05:17

Java获取汉字拼音的全拼和首拼实现代码分享_java的相关文章

java字符串获取汉字拼音首字母的实现方法

问题描述 java字符串获取汉字拼音首字母的实现方法 网上有很多方法可以通过汉字来获取汉字拼音的首字母,我要实现的是这个字符串当中 还包含了特殊符号,比如字符串为:省辖市属(地区.州.直辖市区),想要获得最终 结果为:SXSS(DQZZXSQ),请各位大侠支招 解决方案 按描述你对获取汉字首字母应该没问题, 对含特殊符号的字符串,可先提取其中的汉字,然后再获取拼音啊 public static String getChineseCode(String retCode){ Pattern patt

MySQL数据库获取汉字拼音的首字母函数

原文:MySQL数据库获取汉字拼音的首字母函数 需求简介:最近的一个项目,想实现如下图所示的显示效果.很明显,如果能够获取对应的汉字词组的拼音首字母就可以实现了,如果是固定的几个汉字,人为的拼一下就可以了,不过项目中有多处功能是需要这个效果的,并且事先也不知道对应的汉字是什么,所以就需要一个函数来完成这件事情了,根据网上查询的资料自己改进了一个函数实现的效果,现分享如下. 1:测试环境      1-1:测试工具的信息           1-2:测试数据库的信息      2:测试数据    

php获取汉字拼音首字母的方法_php技巧

现实中我们经常看到这样的说明,排名不分先后,按姓名首字母进行排序.这是中国人大多数使用的排序方法.那么在php程序中该如何操作呢? 下面就分享一下在php程序中获取汉字拼音的首字母的方法,在网上搜到的大多数是有问题的,这个可是经过小编实践应用过的,真的可以使用的哦. //php获取中文字符拼音首字母 function getFirstCharter($str){ if(empty($str)){return '';} $fchar=ord($str{0}); if($fchar>=ord('A'

php获取汉字拼音首字母的函数(真正可以使用的

现实中我们经常看到这样的说明,排名不分先后,按姓名首字母进行排序.这是中国人大多数使用的排序方法.那么在php程序中该如何操作呢?下面就分享一下在php程序中获取汉字拼音的首字母的方法,在网上搜到的大多数是有问题的,这个可是经过作者实践应用过的,真的可以使用的哦. //php获取中文字符拼音首字母 function getFirstCharter($str){ if(empty($str)){return '';} $fchar=ord($str{0}); if($fchar>=ord('A')

ASP.NET获取汉字拼音的第一个字母

asp.net|汉字|拼音 <script language="vbs" src="spellcode.vbs"></script> '获取客户简称的拼音缩写            function getpy()                 dim str                dim i                 str=document.all.txtContactName.value                d

ASP中获取汉字拼音的第一个字母

汉字|拼音 <script language="vbs" src="spellcode.vbs"> </script> '获取客户简称的拼音缩写 function getpy() dim str dim i str=document.all.txtContactName.value dim ret for i=1 to len(str) ret=ret&getpychar(mid(str,i,1)) next document.all

wp手机开发之获取汉字拼音的首字母

今天介绍一种新的方法,使用codeplex上开源的项目GB2312 for Silverlight. 1.创建一个项目,命名为mangoGB2312 2.将GB2312 for Silverlight项目中的两个文件都拷贝至项目目录GB2312下,并且修改GB2312Encoding.cs的命名空间为mangoGB2312.GB2312,如下图所示 开发之获取汉字拼音的首字母 -js获取汉字拼音首字母"> 3.将gb2312.bin的生成方式修改为嵌入式资源,如下图 4.编写提取汉字首字母

ASP.NET 根据汉字获取汉字拼音的首字母(含多音字)_实用技巧

在很多时候,我们需要将汉字的拼音首字母存储到数据库,以便我们能通过首字母进行快速的查询,常见的有百度搜索,你只要输入拼音的首字母,就会出现相关的搜索的关键词,再比如一些办公系统中,查询一个人的姓名,为了简单方便,只输这个人的名字的首字母,就能快速检索. 话不多说,代码分享给大家: #region 获取汉字转换拼音 首字母 public string MkPinyinString(string HanZiStr) //获取汉字字符串的拼音首字母,含多音字 { int i, j, k, m; str

DB2中创建一个获取汉字拼音首字母的SQL函数

有些时候我们会有这样的需求,要求使用字母从a至z对一组数据进行索引,如果数据的格式全部是半角的英文则很容易实现,但若是对一组中文数据进行索引则会引起一点小的麻烦,数据在录入数据库的时候可能并没有指定一个索引字母,这就要求应用程序可以自动生成用于索引的信息. 一般对于中文数据的索引,采用词组的首汉字拼音的首字母,例如: 词组 索引字母 --- ----- 熊猫 x 白暨豚 b 藏野驴 z 在DB2中并没有提供相应的函数可以取得汉字拼音的首字母,我们可以利用数据库针对中文字符集的排序功能创建一个这样