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;
}
}