首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android汉语言按拼音排序

2014-01-17 
Android中文按拼音排序需求:将一组数据按某一字段中文拼音排序1、Test测试类:public class PinyinComparato

Android中文按拼音排序
需求:将一组数据按某一字段中文拼音排序
1、Test测试类:

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;}}



注:附件中仿微信联系人拼音分类列表为别人写的一个模仿微信联系的Demo,功能比较强大;另个附件是我写的测试程序,可以通过Test test = new Test();test.init();运行;

热点排行