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

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

参考文献

相关推荐
我要改名叫嘟嘟10 小时前
读《堂吉诃德》到最后,我舍不得堂吉诃德与桑丘
程序员
程序员老申14 小时前
我受够了在项目、域名、服务器、SSL 之间来回切换,于是开源了 Solo Workspace
程序员·开源
弗锐土豆15 小时前
自动化-程序员从抽象与具象的角度学习自动化
学习·程序员·自动化·抽象·具象
用户35761865971917 小时前
CodeBuddy 学习(5):Speckit 规约驱动开发
程序员
宋均浩17 小时前
20 分钟 → 3 分钟,CI/CD 性能调优实战(GitHub Actions + pytest + Docker)
程序员
DogDaoDao20 小时前
【GitHub】CodeGraph 深度解析:为 AI 编程代理构建预索引代码知识图谱
人工智能·程序员·github·知识图谱·ai编程·ai agent·codegraph
starrysky8101 天前
Hermes Gateway重启慢到让人砸键盘:从journalctl到cProfile,三层根因逐层拆解实录
程序员·angular.js
_code_bear_1 天前
如何设计 Agent 场景下的 Prompt
程序员·开源·设计
alwaysrun1 天前
C++之灵活易用的YAML解析库yaml-cpp
c++·后端·程序员
爱勇宝2 天前
如何评估 AI 大模型的商业价值?
前端·后端·程序员