您的位置:首页 > 编程语言 > Java开发

推荐一款java开源包中文转换成拼音 pinyin4j

2011-09-26 11:34 567 查看
最近项目里面需要用到取拼音首字母的方法,看到网上比较多的是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("农业"));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息