JAVA in Pinyin Tools

Import pinyin4j before using the jar package to the project:

<dependency>
          <groupId>com.belerweb</groupId>
          <artifactId>pinyin4j</artifactId>
          <version>2.5.0</version>
</dependency>

Here, the packaged tools:

package utils;

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;

/**
 *
 * Created by zengxm on 2014/12/4.
 */
public class PinyinUtils {
    HanyuPinyinOutputFormat format = null;
    public static enum Type {
        UPPERCASE,               // all caps 
        LOWERCASE,               // all lowercase 
        FIRSTUPPER,               // initials 
        ONLYFIRSTCHAR     // only the first letter - capital 
    }
     static PinyinUtils = Record new new PinyinUtils ();
     public PinyinUtils () {
        format = new HanyuPinyinOutputFormat();
        format.setCaseType(HanyuPinyinCaseType.UPPERCASE);
        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
    }
    // capitalized tian tomorrow --Ming 
    public  static String toPinYinFirstUpper (String str, String Spera) {
        String pinYin;
        try {
            pinYin = record.toPinYin(str, spera, Type.FIRSTUPPER);
            if("0123456789".contains(pinYin)) {
                pinYin = numBerToPinyin(pinYin);
            }
            return pinYin;
        } catch (BadHanyuPinyinOutputFormatCombination e) {
            return "";
        }
    }
    // ALL CAPS tomorrow --MINGTIAN 
    public  static String toPinYin (String str, String Spera) {
        String pinYin;
        try {
            pinYin = record.toPinYin(str, spera, Type.UPPERCASE);
            return pinYin;
        } catch (BadHanyuPinyinOutputFormatCombination e) {
            return "";
        }
    }
    // contains only the first letter capitalized tomorrow - MT 
    public  static String OnlyFirstChar_Upper (String str) {
        String pinYin;
        try {
            pinYin = record.toPinYin(str, " ", Type.FIRSTUPPER);
            if(pinYin.length() == 0) {
                return "";
            }
            String[] array = pinYin.split(" ");
            String firstchar = "";
            for(String ste : array) {
                if(ste.length() >0) {
                    firstchar  +=  ste.substring(0,1).toUpperCase();
                }
            }
            return firstchar;
        } catch (BadHanyuPinyinOutputFormatCombination e) {
            return "";
        }
    }
    
    /**
     * Str converted into phonetic, if not no corresponding kanji or pinyin, the conversion is not as
     * Such as: convert MINGTIAN tomorrow
     * @Param Cycle
     * @Param rough
     * @return
     * @throws BadHanyuPinyinOutputFormatCombination
     */
    public  String toPinYin(String str, String spera, Type type) throws BadHanyuPinyinOutputFormatCombination {
        if(str == null || str.trim().length()==0) {
            return "";
        }
        if(type == Type.UPPERCASE) {
            format.setCaseType(HanyuPinyinCaseType.UPPERCASE);
        }else {
            format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        }
        String py = "";
        String temp = "";
        String[] t;
        for(int i=0;i<str.length();i++){
            char c = str.charAt(i);
            if((int)c <= 128) {
                py + = c;
            }else{
                t = PinyinHelper.toHanyuPinyinStringArray (c format);
                if (t == null ) {
                    py + = c;
                }else{
                    temp = t[0];
                    if(type == Type.FIRSTUPPER) {
                        temp = t[0].toUpperCase().charAt(0)+temp.substring(1);
                    }
                    py += temp+(i==str.length()-1?"":spera);
                }
            }
        }
        
        return py.trim();
    }
    
    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(); 
    } 

    // number into a corresponding phonetic 
    public  static String numBerToPinyin (String STR) {
        String pinyin = null;
        switch (str) {
        case "0":
            pinyin = "Z";
            break;
        case "1":
            pinyin = "Y";
            break;
        case "2":
            pinyin = "E";
            break;
        case "3":
            pinyin = "S";
            break;
        case "4":
            pinyin = "S";
            break;
        case "5":
            pinyin = "W";
            break;
        case "6":
            pinyin = "L";
            break;
        case "7":
            pinyin = "Q";
            break;
        case "8":
            pinyin = "B";
            break;
        case "9":
            pinyin = "J";
            break;
        }
        return pinyin;

    }
    
    
    public static void main(String[] args) throws BadHanyuPinyinOutputFormatCombination {
        System.out.println(toPinYinFirstUpper("赵波蓝"," "));
    }
}

 

Guess you like

Origin www.cnblogs.com/zblwyj/p/11653241.html