java将汉字转化为拼音

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/a8761087/article/details/49794859

使用pinyin4j将汉字转化为拼音

讲解目录:

  • 将汉字转换为全拼及首拼

  • 扩展汉字

  • 资源下载


1、将汉字转换为全拼及首拼


public static void main(String[] args) {
        String parseStr = "中国人龍的传人";
        try {
            System.out.println("最终结果:" + getParsedStr(parseStr));
        } catch (BadHanyuPinyinOutputFormatCombination e) {
            System.err.println(e.getMessage());
        }
    }

    /**
     * @author lt
     * @param parseStr
     *            要被转换的字符串  支持繁体   非汉字去除
     * @param params
     *            要传递的非必要参数 本示例中第一个为是否 只保留首字母,第二个是否转换为大写 不传递皆false
     * @return
     * @throws BadHanyuPinyinOutputFormatCombination
     *             汉语拼音转换异常
     */
    public static String getParsedStr(String parseStr, Object... params)
            throws BadHanyuPinyinOutputFormatCombination {
        String finalParsedStr = "";
        boolean noParams = params == null || params.length == 0;
        boolean isReseFirChar = !noParams && parseObjToBoolean(params[0]);
        boolean isToUpperCase = !noParams && params.length > 1
                && parseObjToBoolean(params[1]);
        for (int index = 0; index < parseStr.length(); index++) {
            char singleChar = parseStr.charAt(index);
            String[] parsedArr = PinyinHelper
                    .toHanyuPinyinStringArray(singleChar);
            // 获取转换的拼音结果集合 可能有 同一音节多次 出现,因为拼音有4个声调 。如同一音节只保留一次,则去除重复音节
            if (parsedArr != null) {
                // 临时存储该字的所有发音。去除重复的
                List<String> tempList = new ArrayList<String>();
                for (String syllable : parsedArr) {
                    // 去除最后的音节声调 1234 代表 平声、扬声、折声、降声
                    syllable = syllable.substring(0, syllable.length() - 1);
                    // 返回的音节 为 none 时说明该汉字发音未知 、集合中包含音节说明该字已添加过该音节的别的声调的读音。
                    if ("none".equals(syllable)){
                        System.out.println("当前字库中不存在"+singleChar+"汉字,请修改字库后尝试!");
                    }
                    if( tempList.contains(syllable))
                        continue;
                    tempList.add(syllable);
                    System.out.println("[" + singleChar + "]字有(" + syllable
                            + ")发音..");

                    if (isReseFirChar) {
                        syllable = syllable.substring(0, 1);
                    }
                    if (isToUpperCase) {
                        syllable = syllable.toUpperCase();
                    }

                    finalParsedStr += syllable;
                }
                // 单个字循环结束 清空tempList集合
                tempList.clear();
            }
        }
        return finalParsedStr;
    }

    public static boolean parseObjToBoolean(Object obj) {

        String str = obj != null ? obj.toString() : "";
        if ("true".equals(str) || Boolean.parseBoolean(str) == true)
            return true;
        return false;
    }

 执行结果:
    [中]字有(zhong)发音..
    [国]字有(guo)发音..
    [人]字有(ren)发音..
    [龍]字有(long)发音..
    [的]字有(de)发音..
    [的]字有(di)发音..
    [传]字有(chuan)发音..
    [传]字有(zhuan)发音..
    [人]字有(ren)发音..
    最终结果:zhongguorenlongdedichuanzhuanren

2、扩展汉字 (比如自造字,或者汉字多音不全)

因为上图比较麻烦,所以在这里只做文本说明: 1、先把pinyin4j.jar反编译得到源码文件夹;2、找到文件夹目录下的pinyindb文件夹下的unicode_to_hanyu_pinyin.txt,按原格式添加新的中文,或者更改原汉字音节;3、将修改后的文件重新做成jar包替换原jar包即可。

3、资源下载

pinyin4j最新jar包(包含源码):pinyin4j最新jar包下载

java反编译工具:java反编译工具下载

展开阅读全文

没有更多推荐了,返回首页