汉字转换拼音(pinyin4j)

原创 2015年11月18日 11:03:26

汉字转换拼音,根据拼音的首字母分,在安卓通讯录中就应用的非常好。通讯录采用拼音的首字母排序分类,侧边栏可以根据字母检索快速跳转。如下图所示:
通讯录片面截图

推荐一个转换工具:http://pinyin4j.sourceforge.net/
从这个网站下载 pinyin4j-2.5.0.jar 包,里面有很多介绍,可以很详细的了解。(也可以在这里下载:http://download.csdn.net/detail/q59521038/9278953

注意:这个jar首次转换汉字时,会把转换的列表加载到内存,会造成内存一下子消耗很多,且第一次加载慢,后面就非常快,这个问题在开发时要注意,最好异步操作。

留下一个工具类代码,通过工具类代码就可以实现大部分你想要的功能:

/**
 * @homepage http://pinyin4j.sourceforge.net/
 *
 * 拼音转换类
 */
public class PingYinUtil {
    /**
     * 将字符串中的中文转化为拼音,其他字符不变
     * 
     * @param inputString
     * @return
     */
    public static String getPingYin(String inputString) {
        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
        format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        format.setVCharType(HanyuPinyinVCharType.WITH_V);

        char[] input = inputString.trim().toCharArray();
        String output = "";

        try {
            for (int i = 0; i < input.length; i++) {
                if (java.lang.Character.toString(input[i]).matches(
                        "[\\u4E00-\\u9FA5]+")) {
                    String[] temp = PinyinHelper.toHanyuPinyinStringArray(
                            input[i], format);
                    output += temp[0];
                } else
                    output += java.lang.Character.toString(input[i]);
            }

        } catch (BadHanyuPinyinOutputFormatCombination e) {
            e.printStackTrace();
        }
        return output;
    }

    /**
     * char转成拼音
     *
     * @param c
     * @return
     */
    public static String getPingYin(char c) {
        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
        format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        format.setVCharType(HanyuPinyinVCharType.WITH_V);
        String output = "";
        try {
            if (java.lang.Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) {
                String[] temp = PinyinHelper
                        .toHanyuPinyinStringArray(c, format);
                output += temp[0];
            } else
                output += java.lang.Character.toString(c);
        } catch (BadHanyuPinyinOutputFormatCombination e) {
            e.printStackTrace();
        }
        return output;
    }

    /**
     * 首字是否是数字
     * @param inputString
     * @return
     */
    public static boolean isNumber(String inputString) {

        char[] input = inputString.trim().toCharArray();

        if (java.lang.Character.toString(input[0]).matches("[0-9]")) {

            return true;
        }

        return false;

    }

    /**
     * 首字是否是字母
     * @param inputString
     * @return
     */
    public static boolean isLetter(String inputString) {

        char[] input = inputString.trim().toCharArray();

        if (java.lang.Character.toString(input[0]).matches("[a-zA-Z]")) {

            return true;
        }

        return false;

    }

    /**
     * 首字是否是汉字
     * @param inputString
     * @return
     */
    public static boolean isHanZi(String inputString) {

        char[] input = inputString.trim().toCharArray();

        if (java.lang.Character.toString(input[0]).matches("[\\u4E00-\\u9FA5]+")) {

            return true;
        }

        return false;

    }

    /**
     * char 是否是汉字
     * @param c
     * @return
     */
    public static boolean isHanZi(char c) {
        if (java.lang.Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) {
            return true;
        }
        return false;
    }

    /**
     * 判断是字母
     * @param str
     * @return
     */
     public static boolean isWord(String str)
        {
            Pattern pattern = Pattern.compile("^[A-Za-z]+$");
            Matcher isNum = pattern.matcher(str);
            if (!isNum.matches()) {
                return false;
            }
            else {
                return true;
            }
        }

    /**
     * 判断数字
     * 
     * @param str
     * @return
     */
    public static boolean isNumeric(String str) {
        Pattern pattern = Pattern.compile("^[0-9]*$");
        Matcher isNum = pattern.matcher(str);
        if (!isNum.matches()) {
            return false;
        } else {
            return true;
        }
    }

    /**
     * 判断字母数字混合
     * 
     * @param str
     * @return
     */
    public static boolean isAllWord(String str) {
        Pattern pattern = Pattern.compile("^[A-Za-z0-9]+$");
        Matcher isNum = pattern.matcher(str);
        if (!isNum.matches()) {
            return false;
        } else {
            return true;
        }
    }

    /**
     * 判断是汉字
     * 
     * @param str
     * @return
     */
    public static boolean isAllHanZi(String str) {
        Pattern pattern = Pattern.compile("[\\u4E00-\\u9FA5]");
        Matcher isNum = pattern.matcher(str);
        if (!isNum.matches()) {
            return false;
        } else {
            return true;
        }

    }


    /**
     * 判断是特殊字符
     * 
     * @param str
     * @return
     */
    public static boolean isAllTeShuZiFu(String str) {
    //  String regEx = "[`~!@#$%^&*()+=|{}':;',//[//].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?::¥]";
        String regEx="[^A-Za-z0-9\\u4E00-\\u9FA5]";
        Pattern pattern = Pattern.compile(regEx);
        Matcher isNum = pattern.matcher(str);
        if (!isNum.matches()) {
            return false;
        } else {
            return true;
        }

    }

}
版权声明:本文为博主原创文章,转载请说明出处。

相关文章推荐

JAVA实现汉字转换为拼音 pinyin4j/JPinyin

在项目中经常会遇到需求用户输入汉字后转换为拼音的场景,比如说通讯录,就会要求按名字首字符发音排序,如果自己写实现这方面的功能是个很好大的工程,还好网上有公开的第三方jar支持转换,结合网上很多前辈的代...

使用PinYin4j.jar将汉字转换为拼音

可以使用pinyin4j.jar来实现将汉字转换为拼音的功能.代码如下: package mainApp; import net.sourceforge.pinyin4j.PinyinHel...

J2EE 使用pinyin4j实现汉字转换拼音

由于项目需求,要求用户输入中文姓名自动转换成拼音,找到了pinyin4j学习了一下。 很多地方都又见到需要这个功能,所以在这里记录一下学习笔记。 这里也是按照我学习的顺序记录。可以理解成为倒叙,不知道...

pinyin4j:拼音与汉字的转换实例

Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 官网: http://pinyin4j.sourceforge.net/ 有时候,需要将汉字编程对应的...

使用PinYin4j.jar将汉字转换为拼音 .

可以使用pinyin4j.jar来实现将汉字转换为拼音的功能.代码如下:   package mainApp; import net.sourceforge.pinyin4j.Pinyi...

使用pinyin4j获取汉字的拼音和全角半角转换

前段时间sprint分配了一项任务,查询一个bug,页面搜索汉字加上拼音的时候,无法匹配。最开始的时候以为拼音函数有问题,所以估了一下点就开始着手这件事情。 拼音工具类如下: /** * ...
  • kimkd
  • kimkd
  • 2016年05月31日 00:06
  • 429

[pinyin4j] java版汉字转换拼音(大小写)

pinyin4J 是一个可以将汉字转换成拼音的lib,非常实用,其maven地址为:http://mvnrepository.com/artifact/com.belerweb/pinyin4j/2....

探索PinYin4j.jar将汉字转换为拼音的基本用法

将汉字转换为拼音在Android开发中是个很常见的问题。例如:在Android手机应用开发中,要查询联系人的姓名,通常都是用拼音进行查询的。 Pinyin4j是一个功能强悍的汉语拼音工具包,是sou...

pinyin4j汉字转换拼音的工具类

import net.sourceforge.pinyin4j.PinyinHelper;/** * 功能说明:汉字转换拼音工具类 * * @author LZG */ public cla...
  • onezg
  • onezg
  • 2017年02月14日 22:17
  • 591

使用PinYin4j.jar将汉字转换为拼音

转载:http://blog.chinaunix.net/uid-20648927-id-2221486.html package com.Test.util; import net.source...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:汉字转换拼音(pinyin4j)
举报原因:
原因补充:

(最多只允许输入30个字)