什么都不用说了 直接贴代码:
package test; 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; /** * 中文转字母、拼音工具类<br><br> * 注意:依赖的jar包:pinyin4j-2.5.0.jar * * @author wp Dec 9, 2015 6:40:59 PM * */ public class PinYinAPI { public static void main(String[] args) { String ss = PinYinAPI.getPinYinFull("吕氏春秋,我有一颗真挚的心,不要问我为什么?使用PinYin4j很好啊!"); System.out.println(ss); String bb = PinYinAPI.getPinYinFirstChar("吕,我有一颗真挚的心,不要问我为什么?使用PinYin4j很好啊!"); System.out.println(bb); } /** * 得到中文的全拼 * @param str * @return */ public static String getPinYinFull(String str){ return getPinYin(str, true, ToneType.no_tone, true, false); } /** * 得到中文的首字母(大写) * @param str * @return */ public static String getPinYinFirstChar(String str){ return getPinYin(str, false, ToneType.no_tone, false, true); } /** * 声调类型(no_tone:无声调、num_tone:数字声调、mark_tone:标记声调-中文) * */ public static enum ToneType{ no_tone, num_tone, mark_tone } private static HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); /** * 提取每个汉字的全拼或者首字母 * * @param str 要转换的字符串 * @param isFull 是否转全拼 * @param tone 声调类型 * @param isLow 是否转小写 * @param isTrim 是否去除中间的空格 * @return */ public static String getPinYin(String str, boolean isFull, ToneType tone, boolean isLow, boolean isTrim) { if (isNull(str)) { return ""; } if(isLow){ //转换大小写 (LOWERCASE:小写:默认格式、UPPERCASE:大写) format.setCaseType(HanyuPinyinCaseType.LOWERCASE); }else{ format.setCaseType(HanyuPinyinCaseType.UPPERCASE); } if(ToneType.mark_tone.equals(tone)){ // WITH_TONE_NUMBER(以数字代替声调:默认格式)、WITHOUT_TONE (无声调)、WITH_TONE_MARK (有声调,编码必须使用WITH_U_UNICODE) format.setToneType(HanyuPinyinToneType.WITH_TONE_MARK); // 以“吕”为例:WITH_U_AND_COLON(lu:3:默认格式)、WITH_U_UNICODE(lü3)、WITH_V(lv3) format.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE); } else if(ToneType.num_tone.equals(tone)){ format.setToneType(HanyuPinyinToneType.WITH_TONE_NUMBER); format.setVCharType(HanyuPinyinVCharType.WITH_V); } else{ format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); format.setVCharType(HanyuPinyinVCharType.WITH_V); } StringBuilder sb = new StringBuilder(); boolean flag = false; for (int i = 0; i < str.length(); i++) { char word = str.charAt(i); // 提取汉字的首字母、拼音 try { String[] pinyin = PinyinHelper.toHanyuPinyinStringArray(word, format); // pinyinArray = PinyinHelper.toTongyongPinyinStringArray(word); // pinyinArray = PinyinHelper.toYalePinyinStringArray(word); // pinyinArray = PinyinHelper.toWadeGilesPinyinStringArray(word); // System.out.println(Arrays.toString(pinyinArray)); if (pinyin != null) { if(isFull){ if(flag){ sb.append(" "+pinyin[0]); }else{ sb.append(pinyin[0]); flag = true; } }else{ sb.append(pinyin[0].charAt(0)); } }else { sb.append(word); flag = false; } } catch (Exception e) { e.printStackTrace(); sb.append(word); } } return sb.toString(); } /** * 判断字符串是否为空 */ private static boolean isNull(Object strData) { if (strData == null || String.valueOf(strData).trim().equals("")) { return true; } return false; } }