【第22期】观点:IT 行业加班,到底有没有价值?

汉字转换拼音(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;
        }

    }

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

相关文章推荐

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

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

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

可以使用pinyin4j.jar来实现将汉字转换为拼音的功能.代码如下: package mainApp; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuP...
  • wsql
  • wsql
  • 2010-03-31 10:53
  • 274

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

汉字转换成拼音的工具----pinyin4j

     今天在无意中发现了pinyin4j这个强大的工具,它能帮助我们完成将汉字转换成拼音的工作,这给我们的开发带来了巨大的便利,意识到这一点,我果断的学习了。在开始记录我的学习成果前,我必须先感谢pinyin4j的作者Li Min  ...

Pinyin4j解决用拼音对汉字的搜索

1. 简单介绍 有时候,需要将汉字编程对应的拼音,以方便数据的处理。比如在Android手机应用 的开发上,要查询联系人的姓名,通常都是用拼音进行查询的。比如要查询“曹孟德”,就可以输入“cmd”,即“曹孟德”三个汉字的拼音 “caomengde”各字的首字母。但是怎样才能将“曹孟德”...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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