12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- 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 longyong
- * @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();
- }
- }
|