packagecom.zsdf.drugcategoryrelation.controller;importnet.sourceforge.pinyin4j.PinyinHelper;importnet.sourceforge.pinyin4j.format.HanyuPinyinCaseType;importnet.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;importnet.sourceforge.pinyin4j.format.HanyuPinyinToneType;importnet.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;/*** 汉字转化为拼音的工具类
*@authorliuyazhuang
**/
public classPinyinTool {
HanyuPinyinOutputFormat format= null;public static enumType {
UPPERCASE,//全部大写
LOWERCASE, //全部小写
FIRSTUPPER //首字母大写
}publicPinyinTool(){
format= newHanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.UPPERCASE);
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
}public String toPinYin(String str) throwsBadHanyuPinyinOutputFormatCombination{return toPinYin(str, "", Type.UPPERCASE);
}public String toPinYin(String str,String spera) throwsBadHanyuPinyinOutputFormatCombination{returntoPinYin(str, spera, Type.UPPERCASE);
}/*** 将str转换成拼音,如果不是汉字或者没有对应的拼音,则不作转换
* 如: 明天 转换成 MINGTIAN
*@paramstr:要转化的汉字
*@paramspera:转化结果的分割符
*@return*@throwsBadHanyuPinyinOutputFormatCombination*/
public String toPinYin(String str, String spera, Type type) throwsBadHanyuPinyinOutputFormatCombination {if(str == null || str.trim().length()==0)return "";if(type ==Type.UPPERCASE)
format.setCaseType(HanyuPinyinCaseType.UPPERCASE);elseformat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
String py= "";
String temp= "";
String[] t;for(int i=0;i
py+=c;else{
t=PinyinHelper.toHanyuPinyinStringArray(c, format);if(t == null)
py+=c;else{
temp= t[0];if(type ==Type.FIRSTUPPER)
temp= t[0].toUpperCase().charAt(0)+temp.substring(1);
py+= temp+(i==str.length()-1?"":spera);
}
}
}returnpy.trim();
}
}