java获取汉语拼音
获取汉语拼音
之前有个需求是要显示汉语拼音,然后找了一个工具包
<!-- 汉语拼音 -->
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.1</version>
</dependency>
来个栗子
HanyuPinyinOutputFormat hanyuPinyinOutputFormat = new HanyuPinyinOutputFormat();
hanyuPinyinOutputFormat.setToneType(WITHOUT_TONE);
System.out.println(PinyinHelper.toHanYuPinyinString("北京市", hanyuPinyinOutputFormat, "", true));
// 输出 beijingshi
但是有时候是多音字的怎么处理的,比如长沙市
HanyuPinyinOutputFormat hanyuPinyinOutputFormat = new HanyuPinyinOutputFormat();
hanyuPinyinOutputFormat.setToneType(WITHOUT_TONE);
System.out.println(PinyinHelper.toHanYuPinyinString("长沙市", hanyuPinyinOutputFormat, "", true));
// 输出 zhangshashi
这结果也不对呀
多音字处理
当然是有解决方案的,该工具提供了一个外挂,可以自定义一些词的多音字组合
如我配置了长沙
在一块的话读changsha
长沙 (chang2,sha1)
然后使用该外挂
HanyuPinyinOutputFormat hanyuPinyinOutputFormat = new HanyuPinyinOutputFormat();
hanyuPinyinOutputFormat.setToneType(WITHOUT_TONE);
MultiPinyinConfig.multiPinyinPath=Thread.currentThread().getContextClassLoader().getResource("pinyindb/multipy.txt").getPath();
System.out.println(PinyinHelper.toHanYuPinyinString("长沙市", hanyuPinyinOutputFormat, "", true));
// 输出 changshashi
后续的多音字直接在该文件中加入就行
参考文献
本文来自博客园,作者:拾光师,转载请注明原文链接:https://www.cnblogs.com/life-time/p/18584684 个人博客-> https://zhhll.icu