通用的方案有pinyin4j、tinyPinyin等等,推荐使用tinyPinyin
github:https://github.com/promeG/TinyPinyin
项目中有这样的需求,要将汉字转拼音,非多音字的没问题,多音字就有问题,往往不是我们想要的,比如:
大重庆,它在我心里很重要
想得到的结果:
DA CHONG QING , TA ZAI WO XIN LI HEN ZHONG YAO
下面是解决方案:
1.引入maven依赖
<dependency>
<groupId>com.github.promeg</groupId>
<artifactId>tinypinyin</artifactId>
<version>2.0.3</version>
</dependency>
2.自定义词典
如果文字存在词典中会,以词典中的拼音为准,否则按它默认的读音。
// 添加自定义词典
Pinyin.init(Pinyin.newConfig()
.with(new PinyinMapDict() {
@Override
public Map<String, String[]> mapping() {
HashMap<String, String[]> map = new HashMap<>();
// 此处示例,此部分可以将多音字、词组放到数据库中,从库中读取
map.put("重庆", new String[]{"CHONG", "QING"});
map.put("长", new String[]{"ZHANG", "CHANG"});
return map;
}
}));
这样就能得到我们想要的结果了。