PinYinUtil.java 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package com.jsh.erp.utils;
  2. import lombok.extern.slf4j.Slf4j;
  3. import net.sourceforge.pinyin4j.PinyinHelper;
  4. import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
  5. import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
  6. import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
  7. import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
  8. /**
  9. * @Author longyong
  10. * @Date 2024-01-08 23:03
  11. */
  12. @Slf4j
  13. public class PinYinUtil {
  14. public static String getFirstLettersLo(String ChineseLanguage) {
  15. return getFirstLetters(ChineseLanguage, HanyuPinyinCaseType.LOWERCASE);
  16. }
  17. public static String getFirstLetters(String chineseLanguage, HanyuPinyinCaseType caseType) {
  18. char[] cl_chars = chineseLanguage.trim().toCharArray();
  19. StringBuilder pinyin = new StringBuilder();
  20. HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
  21. // 输出拼音全部大写
  22. defaultFormat.setCaseType(caseType);
  23. // 不带声调
  24. defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  25. try {
  26. for (char cl_char : cl_chars) {
  27. String str = String.valueOf(cl_char);
  28. if (str.matches("[\u4e00-\u9fa5]+")) {
  29. // 如果字符是中文,则将中文转为汉语拼音,并取第一个字母
  30. pinyin.append(PinyinHelper.toHanyuPinyinStringArray(cl_char, defaultFormat)[0].substring(0, 1));
  31. } else if (str.matches("[0-9]+")) {
  32. // 如果字符是数字,取数字
  33. pinyin.append(cl_char);
  34. } else if (str.matches("[a-zA-Z]+")) {
  35. // 如果字符是字母,取字母
  36. pinyin.append(cl_char);
  37. } else {
  38. // 否则不转换
  39. //如果是标点符号的话,带着
  40. pinyin.append(cl_char);
  41. }
  42. }
  43. } catch (BadHanyuPinyinOutputFormatCombination e) {
  44. log.error(chineseLanguage + "转拼音失败!", e);
  45. }
  46. return pinyin.toString();
  47. }
  48. }