package hello;
import jetbrick.pinyin.ChinesePinyin;
import net.duguying.pinyin.Pinyin;
import net.duguying.pinyin.PinyinException;
import net.sourceforge.pinyin4j.PinyinHelper;
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 Test {
public static void main(String[] args) {
//PinYin4j
//查询出来是多音字,这里其实是可以反馈给用户选择一下,1.因为多音字毕竟要少很多,回写到界面让用户加以改正。2.其实出现多音字很大情况上是
String[] str = PinyinHelper.toHanyuPinyinStringArray('长');
print(str,"1.pinyin4j ");
//设置输出的格式
HanyuPinyinOutputFormat format= new HanyuPinyinOutputFormat();
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
//单独
format.setVCharType(HanyuPinyinVCharType.WITH_V);
try {
String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray('女', format);
print(pinyinArray,"2.pinyin4j ");
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
//pinyin 1.0,支持智能多音字匹配。强烈建议使用这个包
try {
Pinyin pinyin = new Pinyin();
//将拼音的首字母输出
String s1 = pinyin.translateFirstChar("挨打");
System.out.println("1.pinyin 1.0 "+s1);
//将拼音转换成拼音字数组
String [] s2 = pinyin.translateInArray("挨个");
print(s2,"2.pinyin 1.0 ");
//有声调str
String s3 = pinyin.translate("长沙");
System.out.println("3.pinyin 1.0 "+s3);
//没有声调
String s4 = pinyin.translateNoMark("长沙");
System.out.println("4.pinyin 1.0 "+s4);
//添加逗号隔开,且没有声调
String s5 = pinyin.translateWithSepNoMark("长沙");
System.out.println("5.pinyin 1.0 "+s5);
//没有声调
String s6 = pinyin.translateNoMark("女");
System.out.println("6.pinyin 1.0 "+s6);
} catch (PinyinException e) {
e.printStackTrace();
}
//这个jetbrick-pinyin 1.0,pinyin 的包没有识别多音字的功能
ChinesePinyin pinyin = ChinesePinyin.getInstance();
String s7 = pinyin.getFullPinyin("长沙");
System.out.println(s7);
print(pinyin.getPinyinFromChar('长'),"1.jetbrick-pinyin 1.0 ");
//这个功能不行输出的是空字符串
System.out.println("2.jetbrick-pinyin 1.0 "+pinyin.getChinese("zhangsha"));
//一个字的拼音也无法生成汉字
System.out.println("3.jetbrick-pinyin 1.0 "+pinyin.getChinese("chang"));
}
//输出数组方法
private static void print(String[] strs,String pinyin){
System.out.println(pinyin);
for(String str:strs){
System.out.println(str);
}
}
}
输出结果:
1.pinyin4j
zhang3
chang2
2.pinyin4j
nv
ru
1.pinyin 1.0 ād
2.pinyin 1.0
āi
gè
3.pinyin 1.0 chángshā
4.pinyin 1.0 changsha
5.pinyin 1.0 chang,sha
6.pinyin 1.0 nü
zhangsha
1.jetbrick-pinyin 1.0
zhang3
chang2
2.jetbrick-pinyin 1.0
3.jetbrick-pinyin 1.0
参考jar 包:
本人原创代码,谢谢 大家的支持!~