package cn.ksource.test; 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 Pinyin4j { public 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]; } public String getStringPinYin(String str){ 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(); } public String getFirstStringPinYin(String str){ 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(); } public static void main(String[] args) { Pinyin4j test = new Pinyin4j(); String str = test.getStringPinYin("河南金明源信息技术有限公司"); String str1 = test.getFirstStringPinYin("郑州信源信息技术股份有限公司"); System.out.println(str); System.out.println(str1); } }