PinyinUtils.java

字符串轉拼音,支持全品,首字母縮寫。

 

package com.test;

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.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;

public class PinyinUtils {
    static HanyuPinyinOutputFormat getPinyinFmt() {
        HanyuPinyinOutputFormat fmt = new HanyuPinyinOutputFormat();
        fmt.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        fmt.setVCharType(HanyuPinyinVCharType.WITH_U_AND_COLON);
        fmt.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        return fmt;
    }

    public static char getPinyinFirstLetter(char ch)
            throws BadHanyuPinyinOutputFormatCombination {
        String[] array = null;

        array = PinyinHelper.toHanyuPinyinStringArray(ch, getPinyinFmt());

        if (array != null && array.length > 0 && array[0].length() > 0) {
            // 取漢字拼音首字母
            return Character.toUpperCase(array[0].charAt(0));
        } else
            return Character.toUpperCase(ch);
    }

    public static String getJianpin(String str)
            throws BadHanyuPinyinOutputFormatCombination {
        StringBuffer buf = new StringBuffer();
        for (int i = 0; i < str.length(); i++) {
            buf.append(getPinyinFirstLetter(str.charAt(i)));
        }
        return buf.toString();
    }

    public static String getFullPinyin(String str)
            throws BadHanyuPinyinOutputFormatCombination {
        StringBuffer buf = new StringBuffer();
        for (int i = 0; i < str.length(); i++) {
            String[] array = null;
            array = PinyinHelper.toHanyuPinyinStringArray(str.charAt(i),
                    getPinyinFmt());
            if (array != null && array.length > 0) {
                buf.append(array[0]);
            } else {
                buf.append(str.charAt(i));
            }
            // buf.append(' ');
        }
        return buf.toString();
    }

}
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章