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


本人原创代码,谢谢 大家的支持!~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值