首页 > 系统 > Android > 正文

Android实现中文按拼音排序方法

2020-01-02 07:00:07
字体:
来源:转载
供稿:网友

本文的需求是将一组数据按某一字段中文拼音排序,分享给大家Android实现中文按拼音排序方法,供大家参考,具体内容如下
1、Test测试类:

PinyinComparator comparator = new PinyinComparator();     Collections.sort(strList, comparator); 

其中strList中放置了数据,可以是任何对象,但要对PinyinComparator中的compare进行对应的修改,我Demo中为String[]。

2、PinyinComparator排序类:

public class PinyinComparator implements Comparator<Object> {   /**    * 比较两个字符串    */   public int compare(Object o1, Object o2) {     String[] name1 = (String[]) o1;     String[] name2 = (String[]) o2;     String str1 = getPingYin(name1[0]);     String str2 = getPingYin(name2[0]);     int flag = str1.compareTo(str2);     return flag;   }    /**    * 将字符串中的中文转化为拼音,其他字符不变    *    * @param inputString    * @return    */   public String getPingYin(String inputString) {     HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();     format.setCaseType(HanyuPinyinCaseType.LOWERCASE);     format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);     format.setVCharType(HanyuPinyinVCharType.WITH_V);      char[] input = inputString.trim().toCharArray();// 把字符串转化成字符数组     String output = "";      try {       for (int i = 0; i < input.length; i++) {         // //u4E00是unicode编码,判断是不是中文         if (java.lang.Character.toString(input[i]).matches(             "[//u4E00-//u9FA5]+")) {           // 将汉语拼音的全拼存到temp数组           String[] temp = PinyinHelper.toHanyuPinyinStringArray(               input[i], format);           // 取拼音的第一个读音           output += temp[0];         }         // 大写字母转化成小写字母         else if (input[i] > 'A' && input[i] < 'Z') {           output += java.lang.Character.toString(input[i]);           output = output.toLowerCase();         }         output += java.lang.Character.toString(input[i]);       }     } catch (Exception e) {       Log.e("Exception", e.toString());     }     return output;   } } 

以上就是本文的全部内容,希望对大家的学习有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表