汉字转拼音工具类

发布时间 2023-11-26 09:05:19作者: 残城碎梦

汉字转拼音工具类,拼音首字母大写。

需要注意的是,由于用到了pinyin4j,因此需要导包:

<!--汉字转拼音-->
<dependency>
    <groupId>org.clojars.cbilson</groupId>
    <artifactId>pinyin4j</artifactId>
    <version>2.5.0</version>
</dependency>
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;

public final class PinyinUtil {

    private PinyinUtil() {
    }

    public static String getPinYin(String chineseCharacters) {
        HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
        format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        format.setVCharType(HanyuPinyinVCharType.WITH_V);
        char[] arrays = chineseCharacters.trim().toCharArray();
        String pinyin = "";
        try {
            for (int i = 0; i < arrays.length; i++) {
                char ti = arrays[i];
                if (Character.toString(ti).matches("[\\u4e00-\\u9fa5]")) {
                    String[] temp = PinyinHelper.toHanyuPinyinStringArray(ti, format);
                    char[] cs = temp[0].toCharArray();
                    cs[0] -= 32;
                    pinyin += String.valueOf(cs);
                } else {
                    pinyin += ti;
                }
            }
        } catch (BadHanyuPinyinOutputFormatCombination e) {
            e.printStackTrace();
        }
        return pinyin;
    }
}