zoukankan      html  css  js  c++  java
  • 通讯录中实现汉字转换为汉语拼音并排序

    本人最近做了通讯录的姓名转换为汉语拼音,并对姓名进行有序排序的功能,此篇博客依赖的是第三方jar包,如果想实现此功能可以在网上下载。希望这篇博客对各位有帮助。

    以下实体类都是在第三方jar包下导入,请认真核对,如有不同,就是jar包下载有误。本人刚开始用时也出现过这个问题,再次只做提醒。

    import net.sourceforge.pinyin4j.PinyinHelper;
    import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
    import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
    import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;

    /**
    * 汉字转换为汉语拼音,英文字符不变
    */
    public class Cn2Spell {

      public static StringBuffer sb = new StringBuffer();

      /**
      * 获取汉字字符串的首字母,英文字符不变
      * 例如:阿飞→af
      */
      public static String getPinYinHeadChar(String chines) {
        sb.setLength(0);
        char[] chars = chines.toCharArray();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        for (int i = 0; i < chars.length; i++) {
          if (chars[i] > 128) {
            try {
              sb.append(PinyinHelper.toHanyuPinyinStringArray(chars[i], defaultFormat)[0].charAt(0));
            } catch (Exception e) {
              e.printStackTrace();
            }
          } else {
            sb.append(chars[i]);
          }
        }
        return sb.toString();
      }

      /**
      * 获取汉字字符串的第一个字母
      */
      public static String getPinYinFirstLetter(String str) {
        sb.setLength(0);
        char c = str.charAt(0);
        String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c);
        if (pinyinArray != null) {
          sb.append(pinyinArray[0].charAt(0));
        } else {
          sb.append(c);
        }
        return sb.toString();
      }

      /**
      * 获取汉字字符串的汉语拼音,英文字符不变
      */
      public static String getPinYin(String chines) {
        sb.setLength(0);
        char[] nameChar = chines.toCharArray();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        for (int i = 0; i < nameChar.length; i++) {
          if (nameChar[i] > 128) {
            try {
              sb.append(PinyinHelper.toHanyuPinyinStringArray(nameChar[i], defaultFormat)[0]);
            } catch (Exception e) {
              e.printStackTrace();
            }
          } else {
            sb.append(nameChar[i]);
          }
        }
        return sb.toString();
      }
    }

  • 相关阅读:
    【ZBar】ios错误ignoring file xxx missing required architecture x86_64 in file
    微信内置浏览器UserAgent的判断
    运维技能大全 | Devops Tools 周期表
    Mysql 常用命令集
    Iphone H5上传照片被旋转
    陈小春 相依为命
    Hiveserver2 OOM问题解法
    hiveserver 占用内存过大的问题
    linux查看CPU和内存使用情况
    linux Shell函数
  • 原文地址:https://www.cnblogs.com/jiww/p/6509075.html
Copyright © 2011-2022 走看看