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