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 PinyinUtil {
/**
* 获得汉语拼音的输出格式
*
* @return
*/
protected HanyuPinyinOutputFormat getFormat()
{
HanyuPinyinOutputFormat result = new HanyuPinyinOutputFormat();
result.setVCharType(HanyuPinyinVCharType.WITH_V);
result.setCaseType(HanyuPinyinCaseType.UPPERCASE);
result.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
return result;
}
/**
* 转换一个汉字字符成拼音的字符串
*
* @param c
* @return
*/
public String paraseCharToPinyin(char c)
{
String result = null;
String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c);
try
{
pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, getFormat());
} catch (BadHanyuPinyinOutputFormatCombination e)
{
pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c);
}
result = (null == pinyinArray || pinyinArray.length == 0) ?
Character.toString(c) : pinyinArray[0];
return result;
}
/**
* 转换一个串成为汉语拼音,如“李丽”转换成“LILI”
* @param str
* @return
*/
public String paraseStringToPinyin(String str) {
if(null==str||str.trim().length()==0)
{
return str;
}
StringBuffer result = new StringBuffer();
for (int i = 0; i < str.length(); i++)
{
result.append(paraseCharToPinyin(str.charAt(i)));
}
return result.toString();
}
/**
* 转换一个串成为汉语拼音,带驼峰标识,如“李丽”转换成“LiLi”
* @param str
* @return
*/
public String paraseStringToPinyinInHump(String str) {
if(null==str||str.trim().length()==0){
return str;
}
StringBuffer result = new StringBuffer();
for (int i = 0; i < str.length(); i++){
String temp = paraseCharToPinyin(str.charAt(i)).toLowerCase();
temp = temp.substring(0,1).toUpperCase() + temp.substring(1);
result.append(temp);
}
return result.toString();
}
public static void main(String[] args) {
PinyinUtil util = new PinyinUtil();
String hanZi = "123fdsa !@#$%^&*(胡长江";
String pinYin = util.paraseStringToPinyin(hanZi);
System.out.println(pinYin);
System.out.println("多音字只取第一个");
hanZi = "天";
System.out.println(hanZi + " 全大写:" + util.paraseStringToPinyin(hanZi));
System.out.println(hanZi + " 驼峰:" + util.paraseStringToPinyinInHump(hanZi));
hanZi = "提案";
System.out.println(hanZi + " 全大写:" + util.paraseStringToPinyin(hanZi));
System.out.println(hanZi + " 驼峰:" + util.paraseStringToPinyinInHump(hanZi));
}
}