zoukankan      html  css  js  c++  java
  • Java汉字转成汉语拼音工具类

    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.HanyuPinyinVCharType;
    import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
    
    public class HanyuPinyinHelper {
    
        /** 
         * 将文字转为汉语拼音
         * @param chineselanguage 要转成拼音的中文
         */
        public String toHanyuPinyin(String ChineseLanguage){
            char[] cl_chars = ChineseLanguage.trim().toCharArray();
            String hanyupinyin = "";
            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
            defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 输出拼音全部小写
            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调
            defaultFormat.setVCharType(HanyuPinyinVCharType.WITH_V) ;
            try {
                for (int i=0; i<cl_chars.length; i++){
                    if (String.valueOf(cl_chars[i]).matches("[u4e00-u9fa5]+")){// 如果字符是中文,则将中文转为汉语拼音
                        hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(cl_chars[i], defaultFormat)[0];
                    } else {// 如果字符不是中文,则不转换
                        hanyupinyin += cl_chars[i];
                    }
                }
            } catch (BadHanyuPinyinOutputFormatCombination e) {
                System.out.println("字符不能转成汉语拼音");
            }
            return hanyupinyin;
        }
        
        public static String getFirstLettersUp(String ChineseLanguage){
            return getFirstLetters(ChineseLanguage ,HanyuPinyinCaseType.UPPERCASE);
        }
        
        public static String getFirstLettersLo(String ChineseLanguage){
            return getFirstLetters(ChineseLanguage ,HanyuPinyinCaseType.LOWERCASE);
        }
        
        public static String getFirstLetters(String ChineseLanguage,HanyuPinyinCaseType caseType) {
            char[] cl_chars = ChineseLanguage.trim().toCharArray();
            String hanyupinyin = "";
            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
            defaultFormat.setCaseType(caseType);// 输出拼音全部大写
            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调
            try {
                for (int i = 0; i < cl_chars.length; i++) {
                    String str = String.valueOf(cl_chars[i]);
                    if (str.matches("[u4e00-u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母
                        hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(cl_chars[i], defaultFormat)[0].substring(0, 1);
                    } else if (str.matches("[0-9]+")) {// 如果字符是数字,取数字
                        hanyupinyin += cl_chars[i];
                    } else if (str.matches("[a-zA-Z]+")) {// 如果字符是字母,取字母
                        hanyupinyin += cl_chars[i];
                    } else {// 否则不转换
                        hanyupinyin += cl_chars[i];//如果是标点符号的话,带着
                    }
                }
            } catch (BadHanyuPinyinOutputFormatCombination e) {
                System.out.println("字符不能转成汉语拼音");
            }
            return hanyupinyin;
        }
        
        public static String getPinyinString(String ChineseLanguage){
            char[] cl_chars = ChineseLanguage.trim().toCharArray();
            String hanyupinyin = "";
            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
            defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 输出拼音全部大写
            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调
            try {
                for (int i = 0; i < cl_chars.length; i++) {
                    String str = String.valueOf(cl_chars[i]);
                    if (str.matches("[u4e00-u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母
                        hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(
                                cl_chars[i], defaultFormat)[0];
                    } else if (str.matches("[0-9]+")) {// 如果字符是数字,取数字
                        hanyupinyin += cl_chars[i];
                    } else if (str.matches("[a-zA-Z]+")) {// 如果字符是字母,取字母
    
                        hanyupinyin += cl_chars[i];
                    } else {// 否则不转换
                    }
                }
            } catch (BadHanyuPinyinOutputFormatCombination e) {
                System.out.println("字符不能转成汉语拼音");
            }
            return hanyupinyin;
        }
        /**
         * 取第一个汉字的第一个字符
        * @Title: getFirstLetter 
        * @Description: TODO 
        * @return String   
        * @throws
         */
        public static String getFirstLetter(String ChineseLanguage){
            char[] cl_chars = ChineseLanguage.trim().toCharArray();
            String hanyupinyin = "";
            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
            defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);// 输出拼音全部大写
            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调
            try {
                String str = String.valueOf(cl_chars[0]);
                if (str.matches("[u4e00-u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母
                    hanyupinyin = PinyinHelper.toHanyuPinyinStringArray(
                    cl_chars[0], defaultFormat)[0].substring(0, 1);;
                } else if (str.matches("[0-9]+")) {// 如果字符是数字,取数字
                    hanyupinyin += cl_chars[0];
                } else if (str.matches("[a-zA-Z]+")) {// 如果字符是字母,取字母
    
                    hanyupinyin += cl_chars[0];
                } else {// 否则不转换
    
                }
            } catch (BadHanyuPinyinOutputFormatCombination e) {
                System.out.println("字符不能转成汉语拼音");
            }
            return hanyupinyin;
        }
        
        public static void main(String[] args) {
            HanyuPinyinHelper hanyuPinyinHelper = new HanyuPinyinHelper() ;
            System.out.println(hanyuPinyinHelper.toHanyuPinyin("多发的发独守空房阿道夫打发第三方"));
        }
    }
    //Java汉字转成汉语拼音工具类,需要用到pinyin4j.jar包.
  • 相关阅读:
    MFC Windows 程序设计>WinMain 简单Windows程序 命令行编译
    AT3949 [AGC022D] Shopping 题解
    CF643D Bearish Fanpages 题解
    CF643C Levels and Regions 题解
    CF241E Flights 题解
    CF671C Ultimate Weirdness of an Array 题解
    CF1592F Alice and Recoloring 题解
    GYM 102452E 题解
    CF494C Helping People 题解
    P5556 圣剑护符
  • 原文地址:https://www.cnblogs.com/longbky/p/8288787.html
Copyright © 2011-2022 走看看