代码示例:
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; /** * @Title: * @author Hi * @since JDK1.8 * @history 2021年4月1日 Hi 新建 */ public class PinYinUtils { /** * * @param 获取拼音全称 * @return * @throws BadHanyuPinyinOutputFormatCombination */ public static String getPinyin(String name) { if (StringUtils.isEmpty(name)) { return null; } char[] charArray = name.toCharArray(); StringBuilder pinyin = new StringBuilder(); HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); // 设置大小写格式 //转换为大写字符 //defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE); //转换为小写字符 defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); // 设置声调格式: defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); for (int i = 0; i < charArray.length; i++) { // 匹配中文,非中文转换会转换成null if (Character.toString(charArray[i]).matches("[\\u4E00-\\u9FA5]+")) { String[] hanyuPinyinStringArray; try { hanyuPinyinStringArray = PinyinHelper.toHanyuPinyinStringArray(charArray[i], defaultFormat); String string = hanyuPinyinStringArray[0]; pinyin.append(string + " "); } catch (BadHanyuPinyinOutputFormatCombination e) { LoggerUtil.error(PinYinUtils.class, "字符转换失败:", e.getMessage()); } } else { pinyin.append(charArray[i]); } } return pinyin.toString(); } /** * * @param 获取拼音首字母 * @return * @throws BadHanyuPinyinOutputFormatCombination */ public static String getPinyinInitial(String name) { if (StringUtils.isEmpty(name)) { return null; } char[] charArray = name.toCharArray(); StringBuilder pinyin = new StringBuilder(); HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat(); // 设置大小写格式 //转换为大写字符 //defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE); //转换为小写字符 defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); // 设置声调格式: defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); for (int i = 0; i < charArray.length; i++) { // 匹配中文,非中文转换会转换成null if (Character.toString(charArray[i]).matches("[\\u4E00-\\u9FA5]+")) { String[] hanyuPinyinStringArray; try { hanyuPinyinStringArray = PinyinHelper.toHanyuPinyinStringArray(charArray[i], defaultFormat); if (hanyuPinyinStringArray != null) { pinyin.append(hanyuPinyinStringArray[0].charAt(0)); } } catch (BadHanyuPinyinOutputFormatCombination e) { LoggerUtil.error(PinYinUtils.class, "字符转换失败:", e.getMessage()); } } } return pinyin.toString(); } }
结果一:
zhong wen pin yin
结果二:
zwpy
参考:https://blog.csdn.net/chaoyue1861/article/details/91042682
文章评论