Java 汉语 中文拼音工具类

在国内开发应用程序有时候为了满足客户各种需求经常要写一些与汉语,拼音等相关的工具类,下面是博主经常在项目中使用的一个拼音工具类。

下面是实用工具类需要的依赖

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

工具类代码

package com.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;

/**
 * 中文拼音工具类
 * @author message丶小和尚
 * @create 2020/01/10
 */
public class PinyinUtil {

    /**
     * 获取第一个汉字的首字母 例如 张三:z
     * @param string
     * @return
     */
    public static String getPinYinFirstChar(String string) {
        if(ValidateUtil.isEmpty(string)){
            return "";
        }
        return getPinYinHeadChar(string).substring(0,1);
    }

    /**
     * 获取所有汉字首字母 例如 张三:zs
     * @param string
     * @return
     */
    public static String getPinYinHeadChar(String string) {
        StringBuilder convert = new StringBuilder();
        for (int j = 0; j < string.length(); j++) {
            char word = string.charAt(j);
            String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);
            if (pinyinArray != null) {
                convert.append(pinyinArray[0].charAt(0));
            } else {
                convert.append(word);
            }
        }
        return convert.toString().toUpperCase().substring(0,1);
    }

    /**
     * 获取汉字的所有大写拼音 例如 张三:ZHANGSAN
     * @param name
     * @return
     * @throws BadHanyuPinyinOutputFormatCombination
     */
    public static String getAllUpperCaseChinese(String name) throws BadHanyuPinyinOutputFormatCombination {
        char[] charArray = name.toCharArray();
        StringBuilder pinyin = new StringBuilder();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);//设置大写格式
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);//设置声调格式
        for(char c:charArray){
            if (Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) {//匹配中文,非中文转换会转换成null
                String[] pinyinStringArray = PinyinHelper.toHanyuPinyinStringArray(c,defaultFormat);
                pinyin.append(pinyinStringArray[0]);
            } else {
                pinyin.append(c);
            }
        }
        return pinyin.toString();
    }

    /**
     * 获取汉字的所有小写拼音 例如 张三:zhangsan
     * @param name
     * @return
     * @throws BadHanyuPinyinOutputFormatCombination
     */
    public static String getAllLowerCaseChinese(String name) throws BadHanyuPinyinOutputFormatCombination {
        char[] charArray = name.toCharArray();
        StringBuilder pinyin = new StringBuilder();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);//设置大写格式
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);//设置声调格式
        for(char c:charArray){
            if (Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) {//匹配中文,非中文转换会转换成null
                String[] pinyinStringArray = PinyinHelper.toHanyuPinyinStringArray(c,defaultFormat);
                pinyin.append(pinyinStringArray[0]);
            } else {
                pinyin.append(c);
            }
        }
        return pinyin.toString();
    }

    /**
     * 获取汉字的所有首字母大写拼音 例如 张三:ZS
     * @param name
     * @return
     * @throws BadHanyuPinyinOutputFormatCombination
     */
    public static String getUpperCaseChinese(String name) throws BadHanyuPinyinOutputFormatCombination {
        char[] charArray = name.toCharArray();
        StringBuilder pinyin = new StringBuilder();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);//设置大小写格式
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);//设置声调格式
        for(char c:charArray){//匹配中文,非中文转换会转换成null
            if (Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) {
                String[] hanyuPinyinStringArray = PinyinHelper.toHanyuPinyinStringArray(c, defaultFormat);
                if (hanyuPinyinStringArray != null) {
                    pinyin.append(hanyuPinyinStringArray[0].charAt(0));
                }
            }
        }
        return pinyin.toString();
    }

    /**
     * 获取汉字的所有首字母小写拼音 例如 张三:zs
     * @param name
     * @return
     * @throws BadHanyuPinyinOutputFormatCombination
     */
    public static String getLowerCaseChinese(String name) throws BadHanyuPinyinOutputFormatCombination {
        char[] charArray = name.toCharArray();
        StringBuilder pinyin = new StringBuilder();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);//设置大小写格式
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);//设置声调格式
        for(char c:charArray){
        //匹配中文,非中文转换会转换成null
            if (Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) {
                String[] hanyuPinyinStringArray = PinyinHelper.toHanyuPinyinStringArray(c, defaultFormat);
                if (hanyuPinyinStringArray != null) {
                    pinyin.append(hanyuPinyinStringArray[0].charAt(0));
                }
            }
        }
        return pinyin.toString();
    }
}

如果觉得文章对您有用,不妨 关注 + 收藏 ,更多实用文章在首页!!

你可能感兴趣的:(【Java工具常用类】,java,开发语言)