Android Java汉字转拼音总结
来源:互联网 发布:淘宝直通车选词助手 编辑:程序博客网 时间:2024/06/18 08:32
1、Android系统的通讯录也实现了拼音搜索,所以我们可以偷个懒,直接拿Android系统中的实现类来实现这个功能。
sdk\sources\android-2.3.3-gingerbread-src\com\android\internal\util\HanziToPinyin.java
该类我们无法直接获取实例或者反射访问,不过我们可以直接把源码拷入自己的项目中,然后使用。
概览:
简单看一下,就提供了一个get(Sting)方法供使用。
使用方式:
- public void testHanziToPinyin()
- {
- ArrayList<Token> list = HanziToPinyin.getInstance().get(
- "单赵 钱 孙 李 周 吴 郑 王冯 陈 褚 卫 蒋 沈 韩 杨 朱");
- for (Token token : list)
- {
- System.out.print(token.source + " , " + token.target + " , " + token.type);
- System.out.println();
- }
- }
简单解释一下: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的输出方式)
使用方式:
- String str = "单赵钱孙李周吴郑王冯陈褚卫abc";
- HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
- format.setCaseType(HanyuPinyinCaseType.UPPERCASE);
- format.setToneType(HanyuPinyinToneType.WITH_TONE_NUMBER);
- for(int i = 0 ; i < str.length() ; i++)
- {
- char c = str.charAt(i);
- String[] vals = PinyinHelper.toHanyuPinyinStringArray(c, format);
- System.out.print(Arrays.toString(vals));
- }
输出结果:对于非汉字输出的是返回null
- [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, '吕'
我附上:HanziToPinyin.java以及Pinyin4J.jar供找不到源码或者无法正常下载的亲们下载,下载地址:http://download.csdn.net/detail/lmj623565791/7161713。
- Android Java汉字转拼音总结
- Android Java汉字转拼音总结
- Android Java汉字转拼音总结
- Android Java汉字转拼音总结
- Android Java汉字转拼音总结
- Android Java汉字转拼音总结
- Android Java汉字转拼音总结
- android 汉字转拼音
- android 汉字转拼音
- android 汉字转拼音
- Android 汉字转拼音
- Android汉字转拼音
- Android 汉字转拼音
- android汉字转拼音
- android汉字转拼音
- java 汉字转拼音
- JAVA汉字转拼音
- java汉字转拼音
- 大数加法
- Training--暂停和继续(运行)一个Activity
- table合并行
- 转载一篇写的不错的java ClassLoader工作机制的文章
- [iOS diary]关于重写setter覆盖property时,出现exc_bad_access
- Android Java汉字转拼音总结
- 远程调用内核接口的封装类(RCKObjs)
- Apache Shiro 使用手册(五)Shiro 配置说明
- 房间安排
- table合并行
- Silverlight给按钮添加图片问题
- SSIS错误恢复利器:CheckPoint
- ASP.NET关于Login控件使用
- WWDC 2013 Session笔记--iOS7中的ViewController切换