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

这篇博客介绍了如何使用PinYin4j、pinyin1.0和jetbrick-pinyin1.0三个Java库进行汉字转拼音操作,特别强调了处理多音字的方法。通过代码示例展示了不同库在处理多音字时的不同策略,如提供用户选择、智能匹配等。
摘要由CSDN通过智能技术生成

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

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

0818b9ca8b590ca3270a3433284dd417.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值