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

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

参考文献

相关推荐
得物技术19 分钟前
多 Agent 架构的三次反转:从中心调度到自驱协作|得物技术
程序员·架构·llm
波儿菜34 分钟前
Xcode MCP 助力运行时二进制分析
人工智能·程序员·汇编语言
挖掘狂人2 小时前
AI PC 分水岭:2026 过半 PC 搭载本地 AI,端云协同才是核心
人工智能·程序员·ai编程
深蓝AI5 小时前
Postman 静默改装你的编码 Agent:一份 SEVERE issue 里的六条证据链
人工智能·程序员
陈随易10 小时前
Postman 被曝自动往 Claude Code 和 Codex 装插件
前端·后端·程序员
kyriewen16 小时前
Skills 榜前 10 我全装了:只有 3 个能直接用
前端·javascript·程序员
李剑一17 小时前
他是数字世界的开创者,41岁走完了被亏欠的天才人生,拯救千万人,却被祖国定罪
程序员
Hilaku1 天前
CORS 到底在保护谁?90% 的前端理解错了跨域的本质
前端·javascript·程序员
挖掘狂人1 天前
缓存和数据库的一致性,别停在 “延时双删”
java·后端·程序员
codigger1 天前
缓存和数据库的一致性,别停在 “延时双删”
java·后端·程序员·后端开发