package com.doumee.core.utils; 
 | 
  
 | 
import java.text.Collator; 
 | 
import java.util.ArrayList; 
 | 
import java.util.Arrays; 
 | 
import java.util.Collections; 
 | 
import java.util.Comparator; 
 | 
import java.util.List; 
 | 
import java.util.Map; 
 | 
  
 | 
  
 | 
import net.sourceforge.pinyin4j.PinyinHelper; 
 | 
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; 
 | 
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; 
 | 
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; 
 | 
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; 
 | 
import org.apache.commons.lang3.StringUtils; 
 | 
  
 | 
/** 
 | 
 * 汉语拼音帮助类 
 | 
 *  
 | 
 * @author yanglong 
 | 
 *  
 | 
 */ 
 | 
public class PinYinUtil { 
 | 
  
 | 
    /** 
 | 
     * 比较两个汉字的首字母 <br> 
 | 
     *  
 | 
     * @param ch1 
 | 
     * @param ch2 
 | 
     * @return 
 | 
     */ 
 | 
    public static int comparatorWord(String ch1, String ch2) { 
 | 
        return getFirstSpell(ch2).compareTo(getFirstSpell(ch1)); 
 | 
    } 
 | 
  
 | 
    public static void main(String[] args) { 
 | 
        Comparator<Object> com=Collator.getInstance(java.util.Locale.CHINA);   
 | 
        String[] newArray={"中山","汕头","广州","安庆","阳江","南京","武汉","北京","安阳","北方"};   
 | 
        List<String> list = Arrays.asList(newArray); 
 | 
        Collections.sort(list, com);  
 | 
        for(String i:list){   
 | 
            System.out.print(i+"  ");   
 | 
        } 
 | 
        //System.err.println(getFirstFirstSpell("很合适的积分很少看见")); 
 | 
    } 
 | 
    /** 
 | 
     * 获取汉字串拼音首字母,英文字符不变 
 | 
     *  
 | 
     * @param chinese 
 | 
     *            汉字串 
 | 
     * @return 汉语拼音首字母 
 | 
     */ 
 | 
    public static String getFirstSpell(String chinese) { 
 | 
        StringBuffer pybf = new StringBuffer(); 
 | 
        char[] arr = chinese.toCharArray(); 
 | 
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); 
 | 
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); 
 | 
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); 
 | 
        for (int i = 0; i < arr.length; i++) { 
 | 
            if (arr[i] > 128) { 
 | 
                try { 
 | 
                    String[] temp = PinyinHelper.toHanyuPinyinStringArray( 
 | 
                            arr[i], defaultFormat); 
 | 
                    if (temp != null) { 
 | 
                        pybf.append(temp[0].charAt(0)); 
 | 
                    } 
 | 
                } catch (BadHanyuPinyinOutputFormatCombination e) { 
 | 
                    e.printStackTrace(); 
 | 
                } 
 | 
            } else { 
 | 
                pybf.append(arr[i]); 
 | 
            } 
 | 
        } 
 | 
        return pybf.toString().replaceAll("\\W", "").trim(); 
 | 
    } 
 | 
    /** 
 | 
     * 获取汉字串拼音首字母,英文字符不变 
 | 
     *  
 | 
     * @param chinese 
 | 
     *            汉字串 
 | 
     * @return 汉语拼音首字母 
 | 
     */ 
 | 
    public static String getFirstFirstSpell(String chinese) { 
 | 
        if(StringUtils.isBlank(chinese)){ 
 | 
            return null; 
 | 
        } 
 | 
        StringBuffer pybf = new StringBuffer(); 
 | 
        chinese = chinese.substring(0,1); 
 | 
        char[] arr = chinese.toCharArray(); 
 | 
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); 
 | 
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); 
 | 
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); 
 | 
        for (int i = 0; i < arr.length; i++) { 
 | 
            if (arr[i] > 128) { 
 | 
                try { 
 | 
                    String[] temp = PinyinHelper.toHanyuPinyinStringArray( 
 | 
                            arr[i], defaultFormat); 
 | 
                    if (temp != null) { 
 | 
                        pybf.append(temp[0].charAt(0)); 
 | 
                    } 
 | 
                } catch (BadHanyuPinyinOutputFormatCombination e) { 
 | 
                    e.printStackTrace(); 
 | 
                } 
 | 
            } else { 
 | 
                pybf.append(arr[i]); 
 | 
            } 
 | 
        } 
 | 
        return pybf.toString().replaceAll("\\W", "").trim().toUpperCase(); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 获取汉字串拼音,英文字符不变 
 | 
     *  
 | 
     * @param chinese 
 | 
     *            汉字串 
 | 
     * @return 汉语拼音 
 | 
     */ 
 | 
    public static String getFullSpell(String chinese) { 
 | 
        StringBuffer pybf = new StringBuffer(); 
 | 
        char[] arr = chinese.toCharArray(); 
 | 
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); 
 | 
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); 
 | 
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); 
 | 
        for (int i = 0; i < arr.length; i++) { 
 | 
            if (arr[i] > 128) { 
 | 
                try { 
 | 
                    pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], 
 | 
                            defaultFormat)[0]); 
 | 
                } catch (BadHanyuPinyinOutputFormatCombination e) { 
 | 
                    e.printStackTrace(); 
 | 
                } 
 | 
            } else { 
 | 
                pybf.append(arr[i]); 
 | 
            } 
 | 
        } 
 | 
        return pybf.toString(); 
 | 
    } 
 | 
} 
 |