宇筱博客

  • 解决办法
  • 学无止境
  • 记录时光
  • 百宝箱
宇筱博客
点滴记忆,汇聚成海。
  1. 首页
  2. 解决办法
  3. 正文

java获取中文的拼音和获取中文的拼音首字母

2021年1月4日 518点热度 0人点赞 0条评论

代码示例:

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;

/**
* @Title:
* @author  Hi
* @since   JDK1.8
* @history 2021年4月1日 Hi 新建
*/
public class PinYinUtils {

    /**
     * 
     * @param 获取拼音全称
     * @return
     * @throws BadHanyuPinyinOutputFormatCombination
     */
    public static String getPinyin(String name) {

        if (StringUtils.isEmpty(name)) {
            return null;
        }
        char[] charArray = name.toCharArray();
        StringBuilder pinyin = new StringBuilder();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        // 设置大小写格式
        //转换为大写字符
        //defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
        //转换为小写字符
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        // 设置声调格式:
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        for (int i = 0; i < charArray.length; i++) {
            // 匹配中文,非中文转换会转换成null
            if (Character.toString(charArray[i]).matches("[\\u4E00-\\u9FA5]+")) {
                String[] hanyuPinyinStringArray;
                try {
                    hanyuPinyinStringArray = PinyinHelper.toHanyuPinyinStringArray(charArray[i], defaultFormat);
                    String string = hanyuPinyinStringArray[0];
                    pinyin.append(string + " ");
                } catch (BadHanyuPinyinOutputFormatCombination e) {
                    LoggerUtil.error(PinYinUtils.class, "字符转换失败:", e.getMessage());
                }
            } else {
                pinyin.append(charArray[i]);
            }
        }
        return pinyin.toString();
    }

    /**
     * 
     * @param 获取拼音首字母
     * @return
     * @throws BadHanyuPinyinOutputFormatCombination
     */
    public static String getPinyinInitial(String name) {

        if (StringUtils.isEmpty(name)) {
            return null;
        }
        char[] charArray = name.toCharArray();
        StringBuilder pinyin = new StringBuilder();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        // 设置大小写格式
        //转换为大写字符
        //defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
        //转换为小写字符
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        // 设置声调格式:
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        for (int i = 0; i < charArray.length; i++) {
            // 匹配中文,非中文转换会转换成null
            if (Character.toString(charArray[i]).matches("[\\u4E00-\\u9FA5]+")) {
                String[] hanyuPinyinStringArray;
                try {
                    hanyuPinyinStringArray = PinyinHelper.toHanyuPinyinStringArray(charArray[i], defaultFormat);
                    if (hanyuPinyinStringArray != null) {
                        pinyin.append(hanyuPinyinStringArray[0].charAt(0));
                    }
                } catch (BadHanyuPinyinOutputFormatCombination e) {
                    LoggerUtil.error(PinYinUtils.class, "字符转换失败:", e.getMessage());
                }
            }
        }
        return pinyin.toString();
    }

}

结果一:

zhong wen pin yin

结果二:

zwpy

参考:https://blog.csdn.net/chaoyue1861/article/details/91042682

标签: 暂无
最后更新:2021年1月4日

小渔民

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2025 宇筱博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

豫ICP备15017825号-2