前几天客户端要我把地区按照地址拼音的首字母返回,最好还可以排个序,然后我用到了com.belerweb.pinyin4j
如果使用maven构建的话,那么在pom文件中加入下面的依赖
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.1</version>
</dependency>
先写一个demo试试看,用了PinyinHelper.toHanyuPinyinStringArray
日志输出:会匹配这个词的多重发音,还有第几声,原来我的姓还有这么叫,神奇。
pinyin4j的官方文档地址http://pinyin4j.sourceforge.net/,支持中文词到大多数的拼音系统,输出的拼音也可以格式化,并且支持简体和繁体的。
对于刚刚的那个方法,example中写着“间”的返回,和“李”的返回,还有声调,如果不是中文会返回null
然后我们看看是怎么实现的,点进去获取的是ChineseToPinyinResource对象,然后调用其getHanyuPinyinStringArray返回拼音的数组
为什么这个方法可以返回拼音呢,肯定是有一个库的存在 是吧,ChineseToPinyinResource创建的时候,会吧数据加载进来
这边主要看unicode_to_hanyu_pinyin.txt文件的内容,前面是字符的对应数字的十六进制编码,后面是字符对应的发音,多音吱用逗号隔开。
来看看加载的过程吧,读取文件的每一行内容,用空格分开,put进入hashtable
如你看到的一样,接下来我们就是根据传进来的 char 中字,获取对应的十六进制编码,获取map中对应的拼音
还有就是有格式的输出,在HanyuPinyinOutputFormat类中可以设置拼音的格式
写点demo
日志输出
下面是format的处理
今天简要的看了一下pinyin4j,或许你也用的到!