pinyin4j处理汉语拼音

前几天客户端要我把地区按照地址拼音的首字母返回,最好还可以排个序,然后我用到了com.belerweb.pinyin4j

如果使用maven构建的话,那么在pom文件中加入下面的依赖

<dependency>
    <groupId>com.belerweb</groupId>
    <artifactId>pinyin4j</artifactId>
    <version>2.5.1</version>
</dependency>

先写一个demo试试看,用了PinyinHelper.toHanyuPinyinStringArray

225023_t677_2277632.png

日志输出:会匹配这个词的多重发音,还有第几声,原来我的姓还有这么叫,神奇。

225454_alYb_2277632.png

pinyin4j的官方文档地址http://pinyin4j.sourceforge.net/,支持中文词到大多数的拼音系统,输出的拼音也可以格式化,并且支持简体和繁体的。

230211_2PEr_2277632.png

对于刚刚的那个方法,example中写着“间”的返回,和“李”的返回,还有声调,如果不是中文会返回null

231234_ym8h_2277632.png

然后我们看看是怎么实现的,点进去获取的是ChineseToPinyinResource对象,然后调用其getHanyuPinyinStringArray返回拼音的数组

175849_cTkj_2277632.png

为什么这个方法可以返回拼音呢,肯定是有一个库的存在 是吧,ChineseToPinyinResource创建的时候,会吧数据加载进来

180204_pV3o_2277632.png

这边主要看unicode_to_hanyu_pinyin.txt文件的内容,前面是字符的对应数字的十六进制编码,后面是字符对应的发音,多音吱用逗号隔开。

180329_suKJ_2277632.png

来看看加载的过程吧,读取文件的每一行内容,用空格分开,put进入hashtable

180859_3dVC_2277632.png

如你看到的一样,接下来我们就是根据传进来的 char 中字,获取对应的十六进制编码,获取map中对应的拼音

181147_haxm_2277632.png

还有就是有格式的输出,在HanyuPinyinOutputFormat类中可以设置拼音的格式

184443_iLPV_2277632.png

写点demo

190733_JIer_2277632.png

日志输出

191052_nPE6_2277632.png

下面是format的处理

200213_RIIL_2277632.png

 

今天简要的看了一下pinyin4j,或许你也用的到!

转载于:https://my.oschina.net/u/2277632/blog/1538205

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值