java pinyin实例,拼音写法支持多音字自动识别

/ Java / 没有评论 / 2250浏览

java pinyin实例,拼音写法支持多音字自动识别(本测试实例使用了pinyin4j,pinyin1.0,jetbrick-pinyin)

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 包: