Android实现中文按拼音排序方法
本文的需求是将一组数据按某一字段中文拼音排序,分享给大家Android实现中文按拼音排序方法,供大家参考,具体内容如下
1、Test测试类:
PinyinComparatorcomparator=newPinyinComparator(); Collections.sort(strList,comparator);
其中strList中放置了数据,可以是任何对象,但要对PinyinComparator中的compare进行对应的修改,我Demo中为String[]。
2、PinyinComparator排序类:
publicclassPinyinComparatorimplementsComparator<Object>{
/**
*比较两个字符串
*/
publicintcompare(Objecto1,Objecto2){
String[]name1=(String[])o1;
String[]name2=(String[])o2;
Stringstr1=getPingYin(name1[0]);
Stringstr2=getPingYin(name2[0]);
intflag=str1.compareTo(str2);
returnflag;
}
/**
*将字符串中的中文转化为拼音,其他字符不变
*
*@paraminputString
*@return
*/
publicStringgetPingYin(StringinputString){
HanyuPinyinOutputFormatformat=newHanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
format.setVCharType(HanyuPinyinVCharType.WITH_V);
char[]input=inputString.trim().toCharArray();//把字符串转化成字符数组
Stringoutput="";
try{
for(inti=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];
}
//大写字母转化成小写字母
elseif(input[i]>'A'&&input[i]<'Z'){
output+=java.lang.Character.toString(input[i]);
output=output.toLowerCase();
}
output+=java.lang.Character.toString(input[i]);
}
}catch(Exceptione){
Log.e("Exception",e.toString());
}
returnoutput;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助。
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短