介绍
Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制,然而真正的把含有多音字、数字、字母的中文句子转成拼音得到所有的组合情况却有很大难度,我看过很多有关博客或者帖子,被广大网友视为它的短板和不足,很多网友哀声叹气不能真正得到所有组合情况,一部分也只是用简单循环得到中文句子的拼音组合情况的一种,鄙人利用业余时间研究了研究,把研究结果分享 出来,下边将带大家循序渐进把含有多音字、数字、字母的中文句子转成拼音得到所有的组合情况。
最简单方式获取汉字的拼音
char word='长';//待测汉字,多音字
/*直接获取拼音,返回字符串数组,可能有多个,注意:如果传入的非汉字则返回null*/
String[] easyPinyin=PinyinHelper.toHanyuPinyinStringArray(word);
for(String s:easyPinyin){
System.out.println("汉字转拼音最简单方式:"+s);//有2个zhang3,chang2,后边的数字代表音调
}
运行结果如下:
汉字转拼音最简单方式:zhang3
汉字转拼音最简单方式:chang2
以指定的拼音格式获取汉字的拼音
HanyuPinyinOutputFormat pinyinFormat = new HanyuPinyinOutputFormat(); //创建拼音输入格式类
pinyinFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);//指定格式中的大小写属性为小写
pinyinFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);//指定音标格式无音标
pinyinFormat.setVCharType(HanyuPinyinVCharType.WITH_V);//指定用v表示ü
String[] formatPinyin=null;
try {
formatPinyin = PinyinHelper.toHanyuPinyinStringArray(word, pinyinFormat);//获取对应的汉字拼音,不是汉字返回null
} catch (BadHanyuPinyinOutputFormatCombination e) {//会抛出异常,捕获异常
//logger.error(e.getMessage());
e.printStackTrace();
}
for(String s:formatPinyin){
System.out.println("格