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

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

参考文献

相关推荐
浪里行舟1 天前
你的品牌正在被AI“遗忘”?用BuildSOM找回搜索的下一个风口
人工智能·python·程序员
程序员cxuan1 天前
当 00 后开始用 token 给学校送礼
人工智能·后端·程序员
诸神缄默不语1 天前
营销体系4M模型:MVP(最小可行性产品)、PMF(产品市场匹配)、GTM(市场进入)和MTU(市场转化)
程序员
Hilaku1 天前
从搜索排名到 AI 回答? 先聊一聊 AI 可见度工具 BuildSOM !
前端·javascript·程序员
文心快码BaiduComate1 天前
用Comate 7天完成”鹅鸭杀”游戏网站开发
前端·后端·程序员
每天都是小怪物2 天前
周末两天,我 VibeCoding 了一个 AI 肠胃分析 App:解决自己的小痛点,原来这么爽
程序员
码流怪侠2 天前
Android MediaCodec 全面详解:从入门到精通
android·程序员·音视频开发
橙某人2 天前
体感在前端,难题不分端:小编眼中的 AI Coding 能力边界
程序员
火车叼位2 天前
Windows 双网关自动切换:Node.js + 计划任务实现旁路由优先
网络协议·程序员