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

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

参考文献

相关推荐
两万五千个小时2 小时前
为什么你的 Agent 读了文件,却好像什么都没读到?
人工智能·程序员·架构
老王以为4 小时前
前端视角下的 Java
java·javascript·程序员
魔术师Grace20 小时前
从传统企业架构到 OPC 模式,AI 到底改变了什么?
人工智能·程序员
舒一笑21 小时前
我把设备指纹生成逻辑拆开了:它到底凭什么区分不同设备?
后端·程序员·掘金技术征文
小兵张健1 天前
30天减20斤挑战:少一斤发100红包(3)
程序员
程序员鱼皮1 天前
DeepSeek V4 + GPT-5.5 一手实战,结果很意外!附 Codex 保姆级项目教程
ai·程序员·编程·ai编程·deepseek
Hilaku1 天前
OpenClaw 为什么突然不火了?
前端·javascript·程序员
两万五千个小时1 天前
Agent 任务没做完就停了?我扒了 Claude Code 源码,找到了 4 层原因
人工智能·程序员·架构
CodeSheep1 天前
DeepSeek的最新招人标准,太讽刺了。
前端·后端·程序员
SimonKing1 天前
frontend-dev vs ui-ux-pro-max:谁才是Vibe Coding前端开发的“最强辅助”?
java·后端·程序员