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;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助。