中英文混合排序

转载 2015年11月17日 18:02:16


博客分类:

好久没有写博客了,期间在做桌面云,被要求保密哈。不过最近在写一个android程序,需要实现一个中英文混合排序。不说了,直接代码; 
HanYuUtil.java 

伦理片 http://www.dotdy.com/

Java代码  收藏代码
  1. import net.sourceforge.pinyin4j.PinyinHelper;  
  2. import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;  
  3. import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;  
  4. import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;  
  5. import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;  
  6. import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;  
  7.   
  8. public class HanYuUtil {  
  9.     /** 
  10.      * 将单个字符(包括单个汉字或者单个英文字母)转换为小写字母 
  11.      * @param c 
  12.      * @return 
  13.      */  
  14.     public String getCharacterPinYin(char c)  
  15.     {  
  16.         String[] pinyin=null;  
  17.         HanyuPinyinOutputFormat format =new HanyuPinyinOutputFormat();  
  18.         format.setCaseType(HanyuPinyinCaseType.LOWERCASE);  
  19.         format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);//汉字没有声调  
  20.         format.setVCharType(HanyuPinyinVCharType.WITH_V);  
  21.         try{  
  22.             pinyin = PinyinHelper.toHanyuPinyinStringArray(c, format);  
  23.         }catch(BadHanyuPinyinOutputFormatCombination e){  
  24.             e.printStackTrace();  
  25.         }  
  26.         // 如果c不是汉字,toHanyuPinyinStringArray会返回null  
  27.         if (pinyin == null)  
  28.             return ((Character)c).toString().toLowerCase();  
  29.         // 只取一个发音,如果是多音字,仅取第一个发音  
  30.         return pinyin[0];  
  31.     }  
  32.     /** 
  33.      * 将包含中英文的字符串以小写英文字母的形式返回 
  34.      * @param str 
  35.      * @return 
  36.      */  
  37.     public String getStringPinYin(String str)  
  38.     {  
  39.         StringBuilder sb = new StringBuilder();  
  40.         String tempPinyin = null;  
  41.         for (int i = 0; i < str.length(); ++i)  
  42.         {  
  43.             tempPinyin = getCharacterPinYin(str.charAt(i));  
  44.             sb.append(tempPinyin);  
  45.         }  
  46.         return sb.toString();  
  47.     }  
  48. }  


CustomerComparator.java 
Java代码  收藏代码
  1. import java.util.Comparator;  
  2. import com.xyz.kjy.db.Customer;  
  3.   
  4. public class CustomerComparator implements Comparator<Customer> {  
  5.   
  6.     @Override  
  7.     public int compare(Customer customer0, Customer customer1) {  
  8.         // 按照商家名称排序  
  9.         String catalog0 = "";  
  10.         String catalog1 = "";  
  11.           
  12.         if(customer0!=null&&customer0.getStoreName()!=null)  
  13.             catalog0=HanYuUtil.getStringPinYin(customer0.getStoreName());  
  14.         if(customer1!=null&&customer1.getStoreName()!=null)  
  15.             catalog1=HanYuUtil.getStringPinYin(customer1.getStoreName());  
  16.         return catalog0.compareTo(catalog1);  
  17.     }  
  18.   
  19. }  

影音先锋电影 http://www.iskdy.com/
Customer.java 
Java代码  收藏代码
  1. public class Customer  {  
  2.     private String storeName;//店名,唯一  
  3.       
  4.     public String getStoreName() {  
  5.         return storeName;  
  6.     }  
  7.     public void setStoreName(String storeName) {  
  8.         this.storeName = storeName;  
  9.     }  
  10.   
  11. }  


这里面用到了一个第三方的包,在附件

js实现中英文混合排序

  • 2012年05月31日 15:11
  • 25KB
  • 下载

中英文混合按照首字母排序

中英文混合按照首字母排序 在项目做报表的时候,客户那边提出了默认按照客户的首字母排序,做完才发现有些客户的名字是英文,所以在这边写了一个混合排序的方法。思想就是:如果检查是汉语就把拼音的首...

中英文及数字混合排序

当我们显示一个列表时往往因为中文英

中英文混合排序

这里要用到一个拼音的支持包pinyin4j-2.5.0.jar,大家可以去百度上下载一下 在应用类的app开发过程中,经常会用到联系人排序的功能,这里总结了一个例子 接下来是代码部分 Mai...
  • taven
  • taven
  • 2014年12月24日 15:45
  • 349

[简易]中英文混合排序

【简易】中英文混合排序

Java的中英文混合截取字符串的问题解决方法

Java的中英文混合截取字符串的问题解决方法  Java默认的获取一个字符的长度(不管是否是中英文)都是作为一个字节来处理,但是插入数据库(Oracle)时中文却占了2个字节, 这点搞得人...

1.SetWindowText绘制中英文混合时卡死

结合实例借助资源监视器,process explorer定位死锁问题。

strlen和mb_strlen区别(php获得中英文混合字符长度)

转自: http://apps.hi.baidu.com/share/detail/14644689  strlen和mb_strlen区别(php获得中英文混合字符长度) ...

关于中英文混合字符串截取功能

有时候,我们经常会遇到这样的需求,提示层文字超出,需要JS做字符串截取,但是呢,我们常常会烦恼文字中英文混合如何判断,因为我们知道在JS中 string.length这个值是不考虑中英文的,但是计算机...

UITextView & UITextField 实现中英文混合输入的限制

最近项目中有了一个新的需求, 用户输入昵称时可以同时输入中英文, 且有字数限制(一个中文汉字 == 两个字母), 一开始感觉不太难啊, 但实现的过程中却发现不如想象中容易, 这里写一篇博客记录一下:我...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:中英文混合排序
举报原因:
原因补充:

(最多只允许输入30个字)