package com.sogouchat.util; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.sogouchat.bean.TelNode; 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 HanZiToPinYin { public static String toPinYin(char hanzi){ HanyuPinyinOutputFormat hanyuPinyin = new HanyuPinyinOutputFormat(); hanyuPinyin.setCaseType(HanyuPinyinCaseType.LOWERCASE); hanyuPinyin.setToneType(HanyuPinyinToneType.WITHOUT_TONE); hanyuPinyin.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE); String[] pinyinArray=null; try { if(hanzi>=0x4e00 && hanzi<=0x9fa5){ pinyinArray = PinyinHelper.toHanyuPinyinStringArray(hanzi, hanyuPinyin); } else { String pString=""; pString+=hanzi; return pString; } } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } return pinyinArray[0]; } public static String StrToPinYin(String str){ String strOut=""; String item = ""; for (int i = 0; i < str.length(); i++) { item = toPinYin(str.charAt(i)); strOut+=item; } strOut = strOut.toLowerCase(); strOut = ReplaceAllUnusualStr(strOut); return strOut; } public static void TelToPinYin(TelNode node){ String strOut=""; String capOut=""; String item = ""; for (int i = 0; i < node.mName.length(); i++) { item = toPinYin(node.mName.charAt(i)); strOut+=item; capOut +=item.charAt(0); } // strOut = strOut.toLowerCase(); node.mPinyin = ReplaceAllUnusualStr(strOut); node.mCapPinyin = ReplaceAllUnusualStr(capOut); } public static String ReplaceUnusualStr(String strout){ String dest = ""; Pattern pattern = Pattern.compile("\\s*|\t|\r|\n"); Matcher matcher = pattern.matcher(strout); dest = matcher.replaceAll(""); return dest; } public static String ReplaceAllUnusualStr(String strout){ String dest = ""; Pattern pattern = Pattern.compile("[^a-z0-9]*"); Matcher matcher = pattern.matcher(strout); dest = matcher.replaceAll(""); return dest; } }