Java to get the first letter of the Chinese languageJava to get the first letter of the Pinyin tool classJava to get the first letter of the Pinyin

Write custom directory title here

Maven dependencies

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

PinYinUtil tool class

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;

/**
 * <p>
 * <h2>拼音工具类</h2 > 博客地址:<a href="">...</a>
 * </p>
 *
 * @author Evan
 * @CreateTime 2022/4/6 9:24
 */
public class PinYinUtil {
    
    
    /**
     * 将字符串中的中文转化为拼音,其他字符不变
     *
     * @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);
        char[] input = inputString.trim().toCharArray();
        StringBuilder output = new StringBuilder();
        try {
    
    
            for (char c : input) {
    
    
                if (Character.toString(c).matches("[\\u4E00-\\u9FA5]+")) {
    
    
                    String[] temp = PinyinHelper.toHanyuPinyinStringArray(c, format);
                    output.append(temp[0]);
                } else {
    
    output.append(c);}
            }
        } catch (BadHanyuPinyinOutputFormatCombination e) {
    
    
            e.printStackTrace();
        }
        return output.toString();
    }

    /**
     * 获取汉字串拼音首字母,英文字符不变
     *
     * @param chinese 汉字串
     * @return 汉语拼音首字母
     */
    public static String getFirstSpell(String chinese) {
    
    
        StringBuilder pybf = new StringBuilder();
        char[] arr = chinese.toCharArray();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        for (char c : arr) {
    
    
            if (c > 128) {
    
    
                try {
    
    
                    String[] temp = PinyinHelper.toHanyuPinyinStringArray(c, defaultFormat);
                    if (temp != null) {
    
    
                        pybf.append(temp[0].charAt(0));
                    }
                } catch (BadHanyuPinyinOutputFormatCombination e) {
    
    
                    e.printStackTrace();
                }
            } else {
    
    
                pybf.append(c);
            }
        }
        return pybf.toString().replaceAll("\\W", "").trim();
    }

    /**
     * 获取汉字串拼音,英文字符不变
     *
     * @param chinese 汉字串
     * @return 汉语拼音
     */
    public static String getFullSpell(String chinese) {
    
    
        StringBuilder pybf = new StringBuilder();
        char[] arr = chinese.toCharArray();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        for (char c : arr) {
    
    
            if (c > 128) {
    
    
                try {
    
    
                    pybf.append(PinyinHelper.toHanyuPinyinStringArray(c, defaultFormat)[0]);
                } catch (BadHanyuPinyinOutputFormatCombination e) {
    
    
                    e.printStackTrace();
                }
            } else {
    
    
                pybf.append(c);
            }
        }
        return pybf.toString();
    }
}


Guess you like

Origin blog.csdn.net/qq_40739917/article/details/128532884
Recommended