package com.jsh.erp.utils;
|
|
import lombok.extern.slf4j.Slf4j;
|
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 jishenghua
|
* @Date 2024-01-08 23:03
|
*/
|
@Slf4j
|
public class PinYinUtil {
|
|
public static String getFirstLettersLo(String ChineseLanguage) {
|
return getFirstLetters(ChineseLanguage, HanyuPinyinCaseType.LOWERCASE);
|
}
|
|
public static String getFirstLetters(String chineseLanguage, HanyuPinyinCaseType caseType) {
|
char[] cl_chars = chineseLanguage.trim().toCharArray();
|
StringBuilder pinyin = new StringBuilder();
|
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
|
// 输出拼音全部大写
|
defaultFormat.setCaseType(caseType);
|
// 不带声调
|
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
|
try {
|
for (char cl_char : cl_chars) {
|
String str = String.valueOf(cl_char);
|
if (str.matches("[\u4e00-\u9fa5]+")) {
|
// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母
|
pinyin.append(PinyinHelper.toHanyuPinyinStringArray(cl_char, defaultFormat)[0].substring(0, 1));
|
} else if (str.matches("[0-9]+")) {
|
// 如果字符是数字,取数字
|
pinyin.append(cl_char);
|
} else if (str.matches("[a-zA-Z]+")) {
|
// 如果字符是字母,取字母
|
pinyin.append(cl_char);
|
} else {
|
// 否则不转换
|
//如果是标点符号的话,带着
|
pinyin.append(cl_char);
|
}
|
}
|
} catch (BadHanyuPinyinOutputFormatCombination e) {
|
log.error(chineseLanguage + "转拼音失败!", e);
|
}
|
return pinyin.toString();
|
}
|
}
|