从网上找的资料,记得以前在C中曾经用过这类资料,保存下来以后再进一步测试和应用。 一、引入maven依赖dependencygroupIdcom。belerwebgroupIdpinyin4jartifactIdversion2。5。0versiondependency 二、工具类PinyinUtil。javapackagecom。gl。importjava。util。Aimportnet。sourceforge。pinyin4j。PinyinHimportnet。sourceforge。pinyin4j。format。HanyuPinyinCaseTimportnet。sourceforge。pinyin4j。format。HanyuPinyinOutputFimportnet。sourceforge。pinyin4j。format。HanyuPinyinToneTimportnet。sourceforge。pinyin4j。format。exception。BadHanyuPinyinOutputFormatCpublicclassPinyinUtil{将字符串转换成拼音数组paramsrcreturnpublicstaticString〔〕stringToPinyin(Stringsrc){returnstringToPinyin(src,false,null);}将字符串转换成拼音数组paramsrcreturnpublicstaticString〔〕stringToPinyin(Stringsrc,Stringseparator){returnstringToPinyin(src,true,separator);}将字符串转换成拼音数组paramsrcparamisPolyphone是否查出多音字的所有拼音paramseparator多音字拼音之间的分隔符returnpublicstaticString〔〕stringToPinyin(Stringsrc,booleanisPolyphone,Stringseparator){判断字符串是否为空if(。equals(src)nullsrc){}char〔〕srcCharsrc。toCharArray();intsrcCountsrcChar。String〔〕srcStrnewString〔srcCount〕;for(inti0;isrcCi){srcStr〔i〕charToPinyin(srcChar〔i〕,isPolyphone,separator);}returnsrcS}将单个字符转换成拼音paramsrcreturnpublicstaticStringcharToPinyin(charsrc,booleanisPolyphone,Stringseparator){创建汉语拼音处理类HanyuPinyinOutputFormatdefaultFormatnewHanyuPinyinOutputFormat();输出设置,大小写,音标方式defaultFormat。setCaseType(HanyuPinyinCaseType。LOWERCASE);defaultFormat。setToneType(HanyuPinyinToneType。WITHOUTTONE);StringBuffertempPinyingnewStringBuffer();如果是中文if(src128){try{转换得出结果String〔〕strsPinyinHelper。toHanyuPinyinStringArray(src,defaultFormat);是否查出多音字,默认是查出多音字的第一个字符if(isPolyphonenull!separator){for(inti0;istrs。i){tempPinying。append(strs〔i〕);if(strs。length!(i1)){多音字之间用特殊符号间隔起来tempPinying。append(separator);}}}else{tempPinying。append(strs〔0〕);}}catch(BadHanyuPinyinOutputFormatCombinatione){e。printStackTrace();}}else{tempPinying。append(src);}returntempPinying。toString();}publicstaticStringhanziToPinyin(Stringhanzi){returnhanziToPinyin(hanzi,);}将汉字转换成拼音paramhanziparamseparatorreturnpublicstaticStringhanziToPinyin(Stringhanzi,Stringseparator){创建汉语拼音处理类HanyuPinyinOutputFormatdefaultFormatnewHanyuPinyinOutputFormat();输出设置,大小写,音标方式defaultFormat。setCaseType(HanyuPinyinCaseType。LOWERCASE);defaultFormat。setToneType(HanyuPinyinToneType。WITHOUTTONE);StringpinyingStry{pinyingStrPinyinHelper。toHanyuPinyinString(hanzi,defaultFormat,separator);}catch(BadHanyuPinyinOutputFormatCombinatione){TODOAutogeneratedcatchblocke。printStackTrace();}returnpinyingS}将字符串数组转换成字符串paramstrparamseparator各个字符串之间的分隔符returnpublicstaticStringstringArrayToString(String〔〕str,Stringseparator){StringBuffersbnewStringBuffer();for(inti0;istr。i){sb。append(str〔i〕);if(str。length!(i1)){sb。append(separator);}}returnsb。toString();}简单的将各个字符数组之间连接起来paramstrreturnpublicstaticStringstringArrayToString(String〔〕str){returnstringArrayToString(str,);}将字符数组转换成字符串paramstrparamseparator各个字符串之间的分隔符returnpublicstaticStringcharArrayToString(char〔〕ch,Stringseparator){StringBuffersbnewStringBuffer();for(inti0;ich。i){sb。append(ch〔i〕);if(ch。length!(i1)){sb。append(separator);}}returnsb。toString();}将字符数组转换成字符串paramstrreturnpublicstaticStringcharArrayToString(char〔〕ch){returncharArrayToString(ch,);}取汉字的首字母paramsrcparamisCapital是否是大写returnpublicstaticchar〔〕getHeadByChar(charsrc,booleanisCapital){如果不是汉字直接返回if(src128){returnnewchar〔〕{src};}获取所有的拼音String〔〕pinyingStrPinyinHelper。toHanyuPinyinStringArray(src);创建返回对象intpolyphoneSizepinyingStr。char〔〕headCharsnewchar〔polyphoneSize〕;inti0;截取首字符for(Strings:pinyingStr){charheadChars。charAt(0);首字母是否大写,默认是小写if(isCapital){headChars〔i〕Character。toUpperCase(headChar);}else{headChars〔i〕headC}i;}returnheadC}取汉字的首字母(默认是大写)paramsrcreturnpublicstaticchar〔〕getHeadByChar(charsrc){returngetHeadByChar(src,true);}查找字符串首字母paramsrcreturnpublicstaticString〔〕getHeadByString(Stringsrc){returngetHeadByString(src,true);}查找字符串首字母paramsrcparamisCapital是否大写returnpublicstaticString〔〕getHeadByString(Stringsrc,booleanisCapital){returngetHeadByString(src,isCapital,null);}查找字符串首字母paramsrcparamisCapital是否大写paramseparator分隔符returnpublicstaticString〔〕getHeadByString(Stringsrc,booleanisCapital,Stringseparator){char〔〕charssrc。toCharArray();String〔〕headStringnewString〔chars。length〕;inti0;for(charch:chars){char〔〕chsgetHeadByChar(ch,isCapital);StringBuffersbnewStringBuffer();if(null!separator){intj1;for(charch1:chs){sb。append(ch1);if(j!chs。length){sb。append(separator);}j;}}else{sb。append(chs〔0〕);}headString〔i〕sb。toString();i;}returnheadS}publicstaticvoidmain(String〔〕args){pin4j简码和城市编码Strings1好好学习天天向上;String〔〕headArraygetHeadByString(s1);获得每个汉字拼音首字母System。out。println(Arrays。toString(headArray));Strings2你好;System。out。println(Arrays。toString(stringToPinyin(s2,true,,)));Strings3长;System。out。println(Arrays。toString(stringToPinyin(s3,true,,)));}} 三、运行结果〔H,H,X,X,T,T,X,S〕〔ni,hao,hao〕〔zhang,chang〕