package com.niulande.product.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.HanyuPinyinVCharType; import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; public class PinyinConvert { /** * 获取全拼 * @param src * @return */ public static String getPingYin(String src) { char[] chars = null; chars = src.toCharArray(); String[] strings = new String[chars.length]; HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); format.setCaseType(HanyuPinyinCaseType.LOWERCASE); format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); format.setVCharType(HanyuPinyinVCharType.WITH_V); String result = ""; int t0 = chars.length; try { for (int i = 0; i < t0; i++) { // 判断是否为汉字字符 if (java.lang.Character.toString(chars[i]).matches("[\\u4E00-\\u9FA5]+")) { strings = PinyinHelper.toHanyuPinyinStringArray(chars[i], format); result += strings[0]; } else { result += java.lang.Character.toString(chars[i]); } } return result; } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } return result; } /** * 获取所有中文首字母 * @param str * @return */ public static String getPinYinHeadChar(String str) { String convert = ""; for (int i = 0; i < str.length(); i++) { char word = str.charAt(i); String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word); if (pinyinArray != null) { convert += pinyinArray[0].charAt(0); } else { convert += word; } } return convert; } /** * 获取第一个中文首字母并装换为大写 * @param str * @return */ public static String getHeadCharUpper(String str) { String convert = ""; for (int i = 0; i < str.length(); i++) { char word = str.charAt(i); String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word); if (pinyinArray != null) { convert += pinyinArray[0].charAt(0); } else { convert += word; } } char charAt = convert.charAt(0); convert = String.valueOf(charAt).toUpperCase(); return convert; } /** * 将字符串转移为ASCII码 * * @param cnStr * @return */ public static String getCnASCII(String cnStr) { StringBuffer strBuf = new StringBuffer(); byte[] bGBK = cnStr.getBytes(); for (int i = 0; i < bGBK.length; i++) { // System.out.println(Integer.toHexString(bGBK[i]&0xff)); strBuf.append(Integer.toHexString(bGBK[i] & 0xff)); } return strBuf.toString(); } public static void main(String[] args) { String cnStr = "拼音转换"; System.out.println("转换拼音 : "+getPingYin(cnStr)); System.out.println("所有首字母 : "+getPinYinHeadChar(cnStr)); System.out.println("第一个字首字母 : "+getHeadCharUpper(cnStr)); } }
运行结果 :
转换拼音 : pinyinzhuanhuan
所有首字母 : pyzh
第一个字首字母 : P
maven 依赖
<dependency> <groupId>com.belerweb</groupId> <artifactId>pinyin4j</artifactId> <version>2.5.0</version> </dependency>