diff --git a/pom.xml b/pom.xml index c5d8446..5d8d38d 100644 --- a/pom.xml +++ b/pom.xml @@ -93,6 +93,12 @@ fastjson 2.0.38 + + + com.belerweb + pinyin4j + 2.5.0 + io.springfox springfox-swagger2 diff --git a/src/main/java/com/syjiaer/clinic/server/common/util/PinYinUtil.java b/src/main/java/com/syjiaer/clinic/server/common/util/PinYinUtil.java new file mode 100644 index 0000000..d0ba996 --- /dev/null +++ b/src/main/java/com/syjiaer/clinic/server/common/util/PinYinUtil.java @@ -0,0 +1,68 @@ +package com.syjiaer.clinic.server.common.util; + +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; + + +public class PinYinUtil { + public static String getPinyinFull(String inputString) { + HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); + format.setCaseType(HanyuPinyinCaseType.LOWERCASE); // 小写 + format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); // 不带声调 + + StringBuilder sb = new StringBuilder(); + for (char c : inputString.toCharArray()) { + if (Character.isWhitespace(c)) { + continue; // 跳过空格 + } + if (c > 127 || (c >= '\u4E00' && c <= '\u9FA5')) { // 中文字符 + try { + String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, format); + if (pinyinArray != null) { + sb.append(pinyinArray[0]); + } + } catch (BadHanyuPinyinOutputFormatCombination e) { + e.printStackTrace(); + } + } else { + sb.append(c); // 非中文字符直接追加 + } + } + return sb.toString(); + } + + /** + * 获取字符串的拼音首字母 + * + * @param inputString 输入字符串 + * @return 拼音首字母字符串 + */ + public static String getPinyinFirstLetters(String inputString) { + HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); + format.setCaseType(HanyuPinyinCaseType.UPPERCASE); // 大写 + format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); // 不带声调 + + StringBuilder sb = new StringBuilder(); + for (char c : inputString.toCharArray()) { + if (Character.isWhitespace(c)) { + continue; // 跳过空格 + } + if (c > 127 || (c >= '\u4E00' && c <= '\u9FA5')) { // 中文字符 + try { + String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, format); + if (pinyinArray != null) { + sb.append(pinyinArray[0].charAt(0)); // 取第一个字母 + } + } catch (BadHanyuPinyinOutputFormatCombination e) { + e.printStackTrace(); + } + } else { + sb.append(c); // 非中文字符直接追加 + } + } + return sb.toString(); + } +}