java中关于拼音的处理。

java中关于拼音的处理。列如:两个字符串按拼音排序(微信好友列表中按姓名排序),获取中文的首字母(字母和数字返回原本)。

    package httpreq.guide;

    import net.sourceforge.pinyin4j.PinyinHelper;

    /**@author  作者yangjing: 字符串 拼音
     * @date 创建时间:2017-2-18 下午4:07:27 
     */
    public class PinYin {

        /**
        * @Description:两个字符串按汉语拼音排序规则
        * @return int    返回类型  
        * @author yangjing  
        * @date 2017-2-18 下午4:51:45
         */
        public int getSort(String s1,String s2){
            char[] ss1=s1.toCharArray();
            char[] ss2=s2.toCharArray();
            for (int i = 0; i < ss1.length && i < ss2.length; i++) {
                String sss1=pinyin(ss1[i]);
                String sss2=pinyin(ss2[i]);
                if(sss1.compareTo(sss2)>0){
                    return 1;
                }else if(sss1.compareTo(sss2)<0){
                    return -1;
                }
            }
            //说明前面全部相同,字符串短的小
            if(s1.length()>s2.length()){
                return 1;
            }else if(s1.length()<s2.length()){
                return -1;
            }
            return 0;
        }

        /**
        * @Description: 提取首字母
        * @return String    返回类型  
        * @author yangjing  
        * @date 2017-2-18 下午4:17:45
         */
        public String fristChar(String str){
            char[] strs=str.toCharArray();
            String s=pinyin(strs[0]);
            String fristOne=s.substring(0, 1);
            String fristset=fristOne.toUpperCase();
            return fristset;
        }

        /**
        * @Description: 字符的拼音,多音字符就获取第一个,字母的就返回null
        * @return String    返回类型  
        * @author yangjing  
        * @date 2017-2-18 下午4:27:21
         */
        public String pinyin(char c){
            String[] pinyins=PinyinHelper.toHanyuPinyinStringArray(c);
            if(pinyins==null){
                return String.valueOf(c);
            }
            return pinyins[0];
        }

    }

猜你喜欢

转载自blog.csdn.net/jingyang07/article/details/55669021