• Android Java汉字转拼音总结


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

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


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

    sdksourcesandroid-2.3.3-gingerbread-srccomandroidinternalutilHanziToPinyin.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, '吕'

    LOWERCASE
    Combination WITH_U_AND_COLON WITH_V WITH_U_UNICODE
    WITH_TONE_NUMBER lu:3 lv3 lü3
    WITHOUT_TONE lu: lv
    WITH_TONE_MARK Exception Exception

    UPPERCASE
    Combination WITH_U_AND_COLON WITH_V WITH_U_UNICODE
    WITH_TONE_NUMBER LU:3 LV3 LÜ3
    WITHOUT_TONE LU: LV
    WITH_TONE_MARK Exception Exception


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











    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Vertica 业务用户指定资源池加载数据
    Vertica 数据库知识汇总篇
    Oracle OCP 1Z0-053 Exam Topics
    Oracle 11gR2 RAC修改监听默认端口
    Oracle 11.2.0.4 RAC安装最新PSU补丁
    Openfiler配置RAC共享存储
    ORACLE 11gR2 DG(Physical Standby)日常维护01
    oracle 存储过程 返回结果集
    exception javax.crypto.BadPaddingException: Given final block not properly padded
    plsql 连接oracle数据库的2种方式
  • 原文地址:https://www.cnblogs.com/dingxiaoyue/p/4924998.html
Copyright © 2020-2023  润新知