获取汉语拼音
之前有个需求是要显示汉语拼音,然后找了一个工具包
1 2 3 4 5 6
| <dependency> <groupId>com.belerweb</groupId> <artifactId>pinyin4j</artifactId> <version>2.5.1</version> </dependency>
|
来个栗子
1 2 3 4 5
| HanyuPinyinOutputFormat hanyuPinyinOutputFormat = new HanyuPinyinOutputFormat(); hanyuPinyinOutputFormat.setToneType(WITHOUT_TONE); System.out.println(PinyinHelper.toHanYuPinyinString("北京市", hanyuPinyinOutputFormat, "", true));
|
但是有时候是多音字的怎么处理的,比如长沙市
1 2 3 4 5
| HanyuPinyinOutputFormat hanyuPinyinOutputFormat = new HanyuPinyinOutputFormat(); hanyuPinyinOutputFormat.setToneType(WITHOUT_TONE); System.out.println(PinyinHelper.toHanYuPinyinString("长沙市", hanyuPinyinOutputFormat, "", true));
|
这结果也不对呀
多音字处理
当然是有解决方案的,该工具提供了一个外挂,可以自定义一些词的多音字组合
如我配置了长沙
在一块的话读changsha
然后使用该外挂
1 2 3 4 5 6
| 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));
|
后续的多音字直接在该文件中加入就行