java代码实现汉字转汉语拼音

来源:互联网 发布:装饰质量员 知乎 编辑:程序博客网 时间:2024/05/17 06:20

基于汉语拼音的工具类实现了汉字转汉语拼音的功能。
在同事的代码的基础了,增加了对不能转的汉字报 NullPointerException的修改,实现返回原汉字。

import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;    /**     * 将汉字转换为全拼(每个字之间有一个空格)     *     * @param str     *            字符串,k 为1转大写拼音,否则小写拼音     * @return String     */    public static String getPinYin(String str, int k) {        HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();        // 默认小写        outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);        if (k == 1)            outputFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);        // 不显示拼音的声调        outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);        // outputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);        StringBuilder sb = new StringBuilder();        try {            for (char c : str.toCharArray()) {                // 如果包含有中文标点除号,需要使用正则表达式                if (Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) {                    // if (c > 128) {                    try {                        sb.append(PinyinHelper.toHanyuPinyinStringArray(c,                                outputFormat)[0] + " ");                    } catch (NullPointerException e) {                        sb.append(Character.toString(c) + " ");                    }                } else {                    sb.append(Character.toString(c));                }            }        } catch (BadHanyuPinyinOutputFormatCombination e) {            e.printStackTrace();        }        return sb.toString();    }
0 0
原创粉丝点击