Android Java汉字转拼音总结

转载请表明出处:http://blog.csdn.net/lmj623565791/article/details/23187701    

  开发过程中有时候会遇到使用拼音模糊搜索等功能(典型的就是Android通讯录了),这时就需要汉字能够转化为拼音。


1、Android系统的通讯录也实现了拼音搜索,所以我们可以偷个懒,直接拿Android系统中的实现类来实现这个功能。

sdk\sources\android-2.3.3-gingerbread-src\com\android\internal\util\HanziToPinyin.java

该类我们无法直接获取实例或者反射访问,不过我们可以直接把源码拷入自己的项目中,然后使用。

概览:

简单看一下,就提供了一个get(Sting)方法供使用。

使用方式:

  1. public void testHanziToPinyin()  
  2.     {  
  3.         ArrayList<Token> list = HanziToPinyin.getInstance().get(  
  4.         "单赵 钱 孙 李 周 吴 郑 王冯 陈 褚 卫 蒋 沈 韩 杨 朱");  
  5.         for (Token token : list)  
  6.         {  
  7.             System.out.print(token.source + " , " + token.target + " , " + token.type);  
  8.             System.out.println();  
  9.         }  
  10.     }  
输出结果:


简单解释一下:HanziToPinyin是一个单例,获得该类实例后,get方法传入一个字符串,然后会对每个字符串的每个字符进行解析,解析结果存入Token中,

token.source=源 ;token.target=结果,token.type=2(也就是  public static final int PINYIN = 2; 封装的常量)


2、使用Pinyin4j

首先去http://pinyin4j.sourceforge.net/   下载一个jar包。

主要的几个类:

PinyinHelper 调用方法的核心类

HanyuPinyinOutputFormat 输出格式,设置HanyuPinyinCaseType(大小写),HanyuPinyinToneType(声调的方式),HanyuPinyinVCharType(V的输出方式)

使用方式:

  1. String str = "单赵钱孙李周吴郑王冯陈褚卫abc";  
  2.         HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();  
  3.         format.setCaseType(HanyuPinyinCaseType.UPPERCASE);  
  4.         format.setToneType(HanyuPinyinToneType.WITH_TONE_NUMBER);  
  5.         for(int i = 0 ; i < str.length() ; i++)  
  6.         {  
  7.             char c = str.charAt(i);  
  8.               
  9.             String[] vals = PinyinHelper.toHanyuPinyinStringArray(c, format);  
  10.             System.out.print(Arrays.toString(vals));  
  11.         }  

输出结果:对于非汉字输出的是返回null
  1. [DAN1, CHAN2, SHAN4][ZHAO4][QIAN2][SUN1][LI3][ZHOU1][WU2][ZHENG4][WANG2, WANG4][FENG2, PING2][CHEN2][CHU3, ZHU3][WEI4]nullnullnull  

附上一张官网的图,关于各种格式组合的结果:

Some combinations of these three output formats are forbidden. For example, '吕'

LOWERCASE
CombinationWITH_U_AND_COLONWITH_VWITH_U_UNICODE
WITH_TONE_NUMBERlu:3lv3lü3
WITHOUT_TONElu:lv
WITH_TONE_MARKExceptionException

UPPERCASE
CombinationWITH_U_AND_COLONWITH_VWITH_U_UNICODE
WITH_TONE_NUMBERLU:3LV3LÜ3
WITHOUT_TONELU:LV
WITH_TONE_MARKExceptionException


我附上:HanziToPinyin.java以及Pinyin4J.jar供找不到源码或者无法正常下载的亲们下载,下载地址:http://download.csdn.net/detail/lmj623565791/7161713。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值