最近項目裏面需要用到取拼音首字母的方法,看到網上比較多的是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("農業"));
}
}