java中汉字转换成拼音首字母

本文介绍两种实现将汉字转换为其拼音首字母的方法。一种适用于B2B商城中商品推荐类型的存储需求,另一种用于根据姓名首字母进行快速查询。通过自定义汉字与拼音首字母的映射表和GB2312编码转换实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法一:

最近做的B2B商城的项目,有这样的一个需求,要求获取用户输入的商品推荐类型汉字转换成每个汉字的拼音首字母存入数据库,在网上搜索了下,之看到了返回所有汉字的拼音,我在这里做了一下修改,代码如下:

import java.io.Serializable;


 
  public class PinyinCode implements Serializable {
    public PinyinCode(String py, int cd) {
      pinyin = py;
      code = cd;
    }
    public String pinyin = null;
    public int code = 0;
  }

import java.util.ArrayList;
import test.PinyinCode;

public class JString {
 private static ArrayList pinyin = new ArrayList(395);

 
 public static String getPinyin(String word) {
  StringBuffer str = new StringBuffer();
  String pinyin = "";
  for (int i = 0; i < word.length(); i++) {
   pinyin = getPinyin2(getCode(word.charAt(i)));
   str.append(pinyin.charAt(0));
  }
  return str.toString();
 }

 
 protected static String getPinyin2(int hz) {
  String py = "";
  if (hz > 0 && hz < 160)
   py += hz;
  // else if (hz < -20319 || hz > -10247);
  else if (hz <= -10247 && hz >= -20319) {
   PinyinCode pc = null;
   int i = pinyin.size() - 1;
   for (; i >= 0; i--) {
    pc = (PinyinCode) pinyin.get(i);
    if (pc.code <= hz)
     break;
   }
   if (i >= 0)
    py = pc.pinyin;
  }
  return py;
 }

 
 protected static int getCode(char cc) {
  byte[] bs = String.valueOf(cc).getBytes();
  int code = (bs[0] << 8) | (bs[1] & 0x00FF);
  if (bs.length < 2)
   code = (int) cc;
  bs = null;
  return code;
 }

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

 public static void main(String[] args) {
  System.out.print(getPinyin("花儿都开了"));
 }

}












方法二:

java 获取汉字拼音首字母

     在项目中要更能根据某些查询条件(比如姓名)的首字母作为条件进行查询,比如查一个叫“张三”的人,可以输入‘zs'。写了一个工具类如下:

package com.lenovo.cn;

/**
 * @author xiaoxh
 * @date 2011-2-15
 * @bugs 不支持多音字处理
 */
public class HypyUtil {
    // 简体中文的编码范围从B0A1(45217)一直到F7FE(63486)
    private static int BEGIN = 45217;
    private static int END = 63486;

    // 按照声母表示,这个表是在GB2312中的出现的第一个汉字,也就是说“啊”是代表首字母a的第一个汉字。
    // i, u, v都不做声母, 自定规则跟随前面的字母
    private static char[] chartable = { '啊', '芭', '擦', '搭', '蛾', '发', '噶', '哈',
            '哈', '击', '喀', '垃', '妈', '拿', '哦', '啪', '期', '然', '撒', '塌', '塌',
            '塌', '挖', '昔', '压', '匝', };

    // 二十六个字母区间对应二十七个端点
    // GB2312码汉字区间十进制表示
    private static int[] table = new int[27];

    // 对应首字母区间表
    private static char[] initialtable = { 'a', 'b', 'c', 'd', 'e', 'f', 'g',
            'h', 'h', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
            't', 't', 'w', 'x', 'y', 'z', };

    // 初始化
    static {
        for (int i = 0; i < 26; i++) {
            table[i] = gbValue(chartable[i]);// 得到GB2312码的首字母区间端点表,十进制。
        }
        table[26] = END;// 区间表结尾
    }

    // ------------------------public方法区------------------------
    /**
     * 根据一个包含汉字的字符串返回一个汉字拼音首字母的字符串 最重要的一个方法,思路如下:一个个字符读入、判断、输出
     */
    public static String cn2py(String SourceStr) {
        String Result = "";
        int StrLength = SourceStr.length();
        int i;
        try {
            for (i = 0; i < StrLength; i++) {
                Result += Char2Initial(SourceStr.charAt(i));
            }
        } catch (Exception e) {
            Result = "";
        }
        return Result;
    }

    // ------------------------private方法区------------------------
    /**
     * 输入字符,得到他的声母,英文字母返回对应的大写字母,其他非简体汉字返回 '0'
     *
     */
    private static char Char2Initial(char ch) {
        // 对英文字母的处理:小写字母转换为大写,大写的直接返回
        if (ch >= 'a' && ch <= 'z')
            return (char) (ch - 'a' + 'A');
        if (ch >= 'A' && ch <= 'Z')
            return ch;

        // 对非英文字母的处理:转化为首字母,然后判断是否在码表范围内,
        // 若不是,则直接返回。
        // 若是,则在码表内的进行判断。
        int gb = gbValue(ch);// 汉字转换首字母

        if ((gb < BEGIN) || (gb > END))// 在码表区间之前,直接返回
            return ch;

        int i;
        for (i = 0; i < 26; i++) {// 判断匹配码表区间,匹配到就break,判断区间形如“[,)”
                if ((gb >= table[i]) && (gb < table[i+1]))
                    break;
        }
      
        if (gb==END) {//补上GB2312区间最右端
            i=25;
        }
        return initialtable[i]; // 在码表区间中,返回首字母
    }

    /**
     * 取出汉字的编码 cn 汉字
     */
    private static int gbValue(char ch) {// 将一个汉字(GB2312)转换为十进制表示。
        String str = new String();
        str += ch;
        try {
            byte[] bytes = str.getBytes("GB2312");
            if (bytes.length < 2)
                return 0;
            return (bytes[0] << 8 & 0xff00) + (bytes[1] & 0xff);
        } catch (Exception e) {
            return 0;
        }
    }

    public static void main(String[] args) throws Exception {
        System.out.println(cn2py("云飞扬"));
    }
}

 

------------------------运行结果------------------------

yfy











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值