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

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

参考文献

相关推荐
KaneLogger10 小时前
从传统笔记到 LLM 驱动的结构化 Wiki
人工智能·程序员·架构
修己xj11 小时前
368天,每天头顶一件东西:这件“无聊”的小事,让我想通了一个道理
程序员
无限大614 小时前
数字生存05:在AI时代,如何保持学习能力,不断成长
程序员
无限大614 小时前
职场逻辑05:5步高效管理时间,让你的工作事半功倍
程序员
无限大614 小时前
AI实战05:设计岗专属工作流|用AI打造爆款设计
程序员
Mac的实验室15 小时前
(2026年最新)解决谷歌账号注册设备扫码短信发送失败无法验证难题(100%通过无需扫码验证)
android·google·程序员
程序员鱼皮16 小时前
AI 时代,满分的程序员简历是怎么样的?附简历模板
ai·程序员·编程·求职·简历
我就是马云飞18 小时前
大专毕业两年,我如何进入大厂,并逆袭八年的技术与认知成长
前端·程序员·全栈
我就是马云飞1 天前
停更5年后,我为什么重新开始写技术内容了
android·前端·程序员
SimonKing1 天前
免费!不限量!用opencode接入英伟达(NVIDIA)大模型,轻松打造你的 AI 编程助手
java·后端·程序员