package cn.ksource.core.util; import net.sourceforge.pinyin4j.PinyinHelper; 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 getCharacterPinYin(char c){ String[] pinyin = null; HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); try{ pinyin = PinyinHelper.toHanyuPinyinStringArray(c, format); }catch(BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } // 如果c不是汉字,toHanyuPinyinStringArray会返回null if(pinyin == null) return null; // 只取一个发音,如果是多音字,仅取第一个发音 return pinyin[0]; } /** * 字符串转拼音 * @param str * @param returnNull true:非汉字返回null,false:非汉字原样返回 * @return * @version V1.0.0 * @author 杨凯 * @date Jan 15, 2014 12:05:39 PM */ public static String getStringPinYin(String str,boolean returnNull){ StringBuilder sb = new StringBuilder(); String tempPinyin = null; for(int i = 0; i < str.length(); ++i){ tempPinyin =getCharacterPinYin(str.charAt(i)); if(tempPinyin == null){ // 如果str.charAt(i)非汉字,则保持原样 sb.append(str.charAt(i)); } else{ sb.append(tempPinyin); } } return sb.toString(); } /** * 字符串转拼音,获取首字母 * @param str * @param returnNull true:非汉字返回null,false:非汉字原样返回 * @return * @version V1.0.0 * @author 杨凯 * @date Jan 15, 2014 12:05:39 PM */ public static String getFirstStringPinYin(String str,boolean returnNull){ StringBuilder sb = new StringBuilder(); String tempPinyin = null; for(int i = 0; i < str.length(); ++i){ tempPinyin =getCharacterPinYin(str.charAt(i)); if(tempPinyin == null){ // 如果str.charAt(i)非汉字,则保持原样 sb.append(str.charAt(i)); } else{ sb.append(tempPinyin.charAt(0)); } } return sb.toString(); } }