推薦一款java開源包中文轉換成拼音 pinyin4j

最近項目裏面需要用到取拼音首字母的方法,看到網上比較多的是GB2Alpah方法,但此方法有較多漢字無法輸出,故改用pinyin4j,這個包支持多音字、聲調,包括的漢字比較全了,有一個漢字庫,在jar包裏面。

官網:http://pinyin4j.sourceforge.net/

我自己寫的一個簡單的取拼音首字母的一個方法

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;
public class PinYinUtil {

/**
* 取拼音首字母
* @param str
* @return 成功返回拼音數組,失敗返回空
*/
public static String getFirstPinYin(String str) {
   if (str != null && str.length() > 0) {
    try {
     HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
     //輸出設置,大小寫,音標方式等 
     defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
     defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
     String[] pinyinArr = PinyinHelper.toHanyuPinyinStringArray(str.toCharArray()[0], defaultFormat);
     return array2String(pinyinArr);
    } catch (BadHanyuPinyinOutputFormatCombination e) {
     e.printStackTrace();
    }
   }
   return null;
}

private static String array2String(String[] arr){
   StringBuffer sb = new StringBuffer();
   if(arr != null && arr.length > 0){
    for(String str : arr){
     sb.append(str.charAt(0)).append(",");
    }
   }
   return sb.toString().substring(0, sb.length() - 1);
}

public static void main(String[] args) {
    System.out.println(PinYinUtil.getFirstPinYin("農業"));
}
}


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