美文网首页
Java汉字转换拼音工具类

Java汉字转换拼音工具类

作者: SILENCE_SPEAKS | 来源:发表于2021-01-22 10:13 被阅读0次

    1. 使用pinyin4j

    1.1 引入相关maven依赖

            <dependency>
                <groupId>com.belerweb</groupId>
                <artifactId>pinyin4j</artifactId>
                <version>2.5.0</version>
            </dependency>
    

    1.2 汉字转换拼音工具类相关代码

    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;
    
    /**
     * @description: 汉字拼音转换
     * @author: zyb
     * @date: 2020/01/13 15:40
     */
    public class PinyinUtils {
    
        /**
         * 获得汉字拼音首字母
         * @param chines 中文
         * @return 汉字拼音首字母
         */
        public static String getAlpha(String chines) {
            String pinyinName = "";
            char[] nameChar = chines.toCharArray();
            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
            defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
            for (int i = 0; i < nameChar.length; i++) {
                if (nameChar[i] > 128) {
                    try {
                        pinyinName += PinyinHelper.toHanyuPinyinStringArray(
                                nameChar[i], defaultFormat)[0].charAt(0);
                    } catch (BadHanyuPinyinOutputFormatCombination e) {
                        e.printStackTrace();
                    }
                } else {
                    pinyinName += nameChar[i];
                }
            }
            return pinyinName;
        }
    
        /**
         * 将字符串中的中文转化为拼音,英文字符不变
         * @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);
            String output = "";
            if (inputString != null && inputString.length() > 0
                    && !"null".equals(inputString)) {
                char[] input = inputString.trim().toCharArray();
                try {
                    for (int i = 0; i < input.length; i++) {
                        if (Character.toString(input[i]).matches(
                                "[\\u4E00-\\u9FA5]+")) {
                            String[] temp = PinyinHelper.toHanyuPinyinStringArray(
                                    input[i], format);
                            output += temp[0];
                        } else
                            output += Character.toString(input[i]);
                    }
                } catch (BadHanyuPinyinOutputFormatCombination e) {
                    e.printStackTrace();
                }
            } else {
                return "*";
            }
            return output;
        }
    
        
        public static void main(String[] args) {
            String englishStr = PinyinUtils.getPingYin("测试123ceshi");
            String s = PinyinUtils.getAlpha("测试123ceshi");
            System.out.println(englishStr);
            System.out.println(s);
        }
    }
    
    

    相关文章

      网友评论

          本文标题:Java汉字转换拼音工具类

          本文链接:https://www.haomeiwen.com/subject/pukszktx.html