zoukankan      html  css  js  c++  java
  • 汉字转拼音(pinyin4j)

    1、引入依赖

    <dependency>
            <groupId>pinyin4j.sourceforge.net</groupId>
            <artifactId>pinyin4j</artifactId>
            <version>2.5.0</version>
    
    </dependency>

    2、代码

    package net.biocloud.social.management.utils;
    
    
    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;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    public class ChineseToEnglishHelper {
    
        private static final Logger LOG = LoggerFactory.getLogger(ChineseToEnglishHelper.class);
    
        /**
         * 姓名转换为拼音,如胡八一, BaYi Hu
         *
         * @param realName
         * @return
         */
        public static String chineseToPinyin(String realName) {
            StringBuffer pybf = new StringBuffer();
            char[] arr = realName.trim().toCharArray();
            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
            defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
            String surname = "";
            for (int i = 0; i < arr.length; i++) {
                if (arr[i] > 128) {
                    try {
                        //单个汉字转为拼音
                        String[] _t = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
                        if (i == 0) {
                            surname = _t[0].substring(0, 1).toUpperCase() + _t[0].substring(1, _t[0].length());
                        } else {
                            pybf.append(_t[0].substring(0, 1).toUpperCase() + _t[0].substring(1, _t[0].length()));
                        }
                        if (i == arr.length - 1) {
                            pybf.append(" " + surname);
                        }
                    } catch (BadHanyuPinyinOutputFormatCombination e) {
                        LOG.info("chinese to english error, this is message" + e.getMessage());
                        throw new RuntimeException("chinese to english error");
                    }
                } else {
                    pybf.append(arr[i]);
                }
            }
            return pybf.toString().trim();
        }
    
        /**
         * 姓名转换为拼音,如胡八一, B Y Hu
         *
         * @param realName
         * @return
         */
        public static String chineseToEnglish(String realName) {
            StringBuffer pybf = new StringBuffer();
            char[] arr = realName.trim().toCharArray();
            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
            defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
            String surname = "";
            for (int i = 0; i < arr.length; i++) {
                if (arr[i] > 128) {
                    try {
                        //单个汉字转为拼音
                        String[] _t = PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat);
                        if (i == 0) {
                            surname = _t[0].substring(0, 1).toUpperCase() + _t[0].substring(1, _t[0].length());
                        } else {
                            pybf.append((arr.length == 2) ? _t[0].substring(0, 1).toUpperCase() :
                                    (i == 1) ? _t[0].substring(0, 1).toUpperCase() + " " : _t[0].substring(0, 1).toUpperCase());
                        }
                        if (i == arr.length - 1) {
                            pybf.append(" " + surname);
                        }
                    } catch (BadHanyuPinyinOutputFormatCombination e) {
                        LOG.info("chinese to pinyin error, this is message" + e.getMessage());
                        throw new RuntimeException("chinese to pinyin error");
                    }
                } else {
                    pybf.append(arr[i]);
                }
            }
            return pybf.toString().trim();
        }
    
        public static void main(String arg[]) {
            System.out.println(chineseToPinyin("胡八一"));
            System.out.println(chineseToEnglish("胡八一"));
        }
    
    }
  • 相关阅读:
    DateUtils
    Java静态绑定与动态绑定
    Mysql中实现递归查询
    架构一、核心概念
    Spring cron 表达式
    MySql点点滴滴(一)之可视化工具介绍
    java中注解的使用与实例
    3、第一个Python程序
    CSS命名
    如何在Notepad++ 中成功地安装Emmet 插件
  • 原文地址:https://www.cnblogs.com/sunjf/p/java_pinyin4j.html
Copyright © 2011-2022 走看看