java获取汉语拼音

获取汉语拼音

之前有个需求是要显示汉语拼音,然后找了一个工具包

xml 复制代码
<!-- 汉语拼音 -->
<dependency>
    <groupId>com.belerweb</groupId>
    <artifactId>pinyin4j</artifactId>
    <version>2.5.1</version>
</dependency>

来个栗子

java 复制代码
HanyuPinyinOutputFormat hanyuPinyinOutputFormat = new HanyuPinyinOutputFormat();
hanyuPinyinOutputFormat.setToneType(WITHOUT_TONE);
System.out.println(PinyinHelper.toHanYuPinyinString("北京市", hanyuPinyinOutputFormat, "", true));

// 输出 beijingshi

但是有时候是多音字的怎么处理的,比如长沙市

java 复制代码
HanyuPinyinOutputFormat hanyuPinyinOutputFormat = new HanyuPinyinOutputFormat();
hanyuPinyinOutputFormat.setToneType(WITHOUT_TONE);
System.out.println(PinyinHelper.toHanYuPinyinString("长沙市", hanyuPinyinOutputFormat, "", true));

// 输出 zhangshashi

这结果也不对呀

多音字处理

当然是有解决方案的,该工具提供了一个外挂,可以自定义一些词的多音字组合

如我配置了长沙在一块的话读changsha

scss 复制代码
长沙 (chang2,sha1)

然后使用该外挂

java 复制代码
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

后续的多音字直接在该文件中加入就行

参考文献

相关推荐
程序员小灰8 小时前
来看看一位阿里P9的年薪和资产
面试·程序员·腾讯
创码小奇客2 天前
《Java 面向对象三剑客:继承、封装、多态的奇妙冒险》
java·后端·程序员
转转技术团队2 天前
倒排期下全新APP测试无法兼顾质量和效率?这份秘诀请收好
程序员
安妮的心动录2 天前
中国政府与经济发展—— 读《置身事内》小记
程序员·电子书
程序员的自律生活3 天前
Android事件分发的这些问题你真的搞懂了吗?
android·面试·程序员
我要改名叫嘟嘟3 天前
读《信念:人生每一步都算数》,一步、一步、又一步……
程序员
熬夜加班写代码4 天前
设计模式面试大全:说一下单例模式,及其应用场景?
java·后端·单例模式·设计模式·面试·程序员
伊泽瑞尔4 天前
8年老前端,被裁一个月,7个面试4个offer,拒绝国企选择了民企,给正在找工作的小伙伴一些建议
前端·面试·程序员
陈随易5 天前
vite v6更新发现的有趣细节
前端·后端·程序员