PinyinUtils.java 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package com.uas.eis.utils;
  2. import net.sourceforge.pinyin4j.PinyinHelper;
  3. import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
  4. import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
  5. import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
  6. import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
  7. public class PinyinUtils {
  8. private static final HanyuPinyinOutputFormat FORMAT = new HanyuPinyinOutputFormat();
  9. static {
  10. FORMAT.setCaseType(HanyuPinyinCaseType.LOWERCASE);
  11. FORMAT.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
  12. }
  13. /**
  14. * 中文姓名转拼音缩写(首字符全拼+后续字符首字母)
  15. * @param chineseName 中文姓名
  16. * @return 拼音缩写(小写)
  17. */
  18. public static String getCustomPinyin(String chineseName) {
  19. if (chineseName == null || chineseName.trim().isEmpty()) {
  20. return "";
  21. }
  22. StringBuilder pinyin = new StringBuilder();
  23. char[] chars = chineseName.trim().toCharArray();
  24. try {
  25. // 处理第一个字符:全拼
  26. if (chars.length > 0) {
  27. String[] firstCharPinyin = PinyinHelper.toHanyuPinyinStringArray(chars[0], FORMAT);
  28. if (firstCharPinyin != null && firstCharPinyin.length > 0) {
  29. pinyin.append(firstCharPinyin[0]);
  30. }
  31. }
  32. // 处理后续字符:首字母
  33. for (int i = chars.length > 0 ? 1 : 0; i < chars.length; i++) {
  34. String[] charPinyin = PinyinHelper.toHanyuPinyinStringArray(chars[i], FORMAT);
  35. if (charPinyin != null && charPinyin.length > 0) {
  36. pinyin.append(charPinyin[0].charAt(0));
  37. }else {
  38. pinyin.append(chars[i]);
  39. }
  40. }
  41. } catch (BadHanyuPinyinOutputFormatCombination e) {
  42. e.printStackTrace();
  43. }
  44. return pinyin.toString().replace(":","");
  45. }
  46. }