• 【Java】【23】汉字转拼音


    前言:

    1,pinyin4J.jar包

    2,常用方法:转为常见拼音——PinyinHelper.oHanyuPinyinStringArray(char ch)

    3,HanyuPinyinOutputFormat :输出的格式

    4,代码

    正文:

    1,jar包的maven地址为http://mvnrepository.com/artifact/com.belerweb/pinyin4j/2.5.0

    2, 常用方法

    PinyinHelper.oHanyuPinyinStringArray(char ch, HanyuPinyinOutputFormat outputFormat)

    将char(必须为汉字单字)转化为拼音,如果ch为非汉字,返回null。

    输入:重 输出:[zhong4, chong2],说明重字有两个读音,拼音后面的1,2,3,4 代表的是读音。

    其他诸如转为 注音符号拼音 的方法,请看我参考的第一篇博客,写得挺好的

    3,HanyuPinyinOutputFormat :输出的格式

    HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
    
    format.setCaseType(HanyuPinyinCaseType.UPPERCASE);
    
    format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);

    (1)HanyuPinyinCaseType代表大小写

    UPPERCASE:全部大写

    LOWERCASE:全部小写

    FIRSTUPPER:首字母大写

    (2)HanyuPinyinToneType代表声调

    .WITH_TONE_NUMBER:用数字表示声调,如:liu2

    .WITHOUT_TONE:无声调,liu

    .WITH_TONE_MARK:用声调符号表示,打不出来。。。可看第二篇参考博客

     4,代码

    package com.lyz.pingyin;
     
    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;
     
     
    /**
     * 汉字转化为拼音的工具类
     * @author liuyazhuang
     *
     */
    public class PinyinTool {
        HanyuPinyinOutputFormat format = null;
        public static enum Type {
            UPPERCASE,              //全部大写
            LOWERCASE,              //全部小写
            FIRSTUPPER              //首字母大写
        }
     
        public PinyinTool(){
            format = new HanyuPinyinOutputFormat();
            format.setCaseType(HanyuPinyinCaseType.UPPERCASE);
            format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        }
     
        public String toPinYin(String str) throws BadHanyuPinyinOutputFormatCombination{
            return toPinYin(str, "", Type.UPPERCASE);
        }
     
        //spera代表分割符号
        public String toPinYin(String str,String spera) throws BadHanyuPinyinOutputFormatCombination{
            return toPinYin(str, spera, Type.UPPERCASE);
        }
     
        /**
         * 将str转换成拼音,如果不是汉字或者没有对应的拼音,则不作转换
         * 如: 明天 转换成 MINGTIAN
         * @param str:要转化的汉字
         * @param spera:转化结果的分割符
         * @return
         * @throws BadHanyuPinyinOutputFormatCombination
         */
        public String toPinYin(String str, String spera, Type type) throws BadHanyuPinyinOutputFormatCombination {
            if(str == null || str.trim().length()==0)
                return "";
            if(type == Type.UPPERCASE)
                format.setCaseType(HanyuPinyinCaseType.UPPERCASE);
            else
                format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
     
            String py = "";
            String temp = "";
            String[] t;
            for(int i=0;i<str.length();i++){
                char c = str.charAt(i);
                if((int)c <= 128)
                    py += c;
                else{
                    t = PinyinHelper.toHanyuPinyinStringArray(c, format);
                    if(t == null)
                        py += c;
                    else{
                        temp = t[0];
                        if(type == Type.FIRSTUPPER)
                            temp = t[0].toUpperCase().charAt(0)+temp.substring(1);
                        py += temp+(i==str.length()-1?"":spera);
                    }
                }
            }
            return py.trim();
        }
    }

    参考博客:

    1,Java之——汉字转换拼音(大小写) - 冰河的专栏 - CSDN博客
    https://blog.csdn.net/l1028386804/article/details/55505397

    2,pinyin4j的使用手册 - 百度文库

    https://wenku.baidu.com/view/722351ef102de2bd9605881c.html

  • 相关阅读:
    六. numpy数据矩阵
    十一.python面向对象(接口)abstractmethod,ABCMeta
    十.python面向对象(itme)
    九.python面向对象(双下方法内置方法)
    八. python面向对象(反射和内置方法)
    七. python面向对象(组合)
    六. python面向对象(内置函数)
    五. python面向对象(多态 和metaclass=abc.ABCMeta)
    四. python面向对象(继承)
    三. python面向对象(私有属性和私有方法 私有静态方法 私有类方法)
  • 原文地址:https://www.cnblogs.com/huashengweilong/p/10934334.html
Copyright © 2020-2023  润新知