获取汉语拼音
之前有个需求是要显示汉语拼音,然后找了一个工具包
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
后续的多音字直接在该文件中加入就行
参考文献