android 汉字拼音排序,Android实现中文按拼音排序方法

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

1、Test测试类:

PinyinComparator comparator = new PinyinComparator();

Collections.sort(strList, comparator);

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

2、PinyinComparator排序类:

public class PinyinComparator implements Comparator {

/**

* 比较两个字符串

*/

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;

}

}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值