使用pinyin4j将汉字转化为拼音
讲解目录:
将汉字转换为全拼及首拼
扩展汉字
资源下载
1、将汉字转换为全拼及首拼
public static void main(String[] args) {
String parseStr = "中国人龍的传人";
try {
System.out.println("最终结果:" + getParsedStr(parseStr));
} catch (BadHanyuPinyinOutputFormatCombination e) {
System.err.println(e.getMessage());
}
}
/**
* @author lt
* @param parseStr
* 要被转换的字符串 支持繁体 非汉字去除
* @param params
* 要传递的非必要参数 本示例中第一个为是否 只保留首字母,第二个是否转换为大写 不传递皆false
* @return
* @throws BadHanyuPinyinOutputFormatCombination
* 汉语拼音转换异常
*/
public static String getParsedStr(String parseStr, Object... params)
throws BadHanyuPinyinOutputFormatCombination {
String finalParsedStr = "";
boolean noParams = params == null || params.length == 0;
boolean isReseFirChar = !noParams && parseObjToBoolean(params[0]);
boolean isToUpperCase = !noParams && params.length > 1
&& parseObjToBoolean(params[1]);
for (int index = 0; index < parseStr.length(); index++) {
char singleChar = parseStr.charAt(index);
String[] parsedArr = PinyinHelper
.toHanyuPinyinStringArray(singleChar);
// 获取转换的拼音结果集合 可能有 同一音节多次 出现,因为拼音有4个声调 。如同一音节只保留一次,则去除重复音节
if (parsedArr != null) {
// 临时存储该字的所有发音。去除重复的
List<String> tempList = new ArrayList<String>();
for (String syllable : parsedArr) {
// 去除最后的音节声调 1234 代表 平声、扬声、折声、降声
syllable = syllable.substring(0, syllable.length() - 1);
// 返回的音节 为 none 时说明该汉字发音未知 、集合中包含音节说明该字已添加过该音节的别的声调的读音。
if ("none".equals(syllable)){
System.out.println("当前字库中不存在"+singleChar+"汉字,请修改字库后尝试!");
}
if( tempList.contains(syllable))
continue;
tempList.add(syllable);
System.out.println("[" + singleChar + "]字有(" + syllable
+ ")发音..");
if (isReseFirChar) {
syllable = syllable.substring(0, 1);
}
if (isToUpperCase) {
syllable = syllable.toUpperCase();
}
finalParsedStr += syllable;
}
// 单个字循环结束 清空tempList集合
tempList.clear();
}
}
return finalParsedStr;
}
public static boolean parseObjToBoolean(Object obj) {
String str = obj != null ? obj.toString() : "";
if ("true".equals(str) || Boolean.parseBoolean(str) == true)
return true;
return false;
}
执行结果:
[中]字有(zhong)发音..
[国]字有(guo)发音..
[人]字有(ren)发音..
[龍]字有(long)发音..
[的]字有(de)发音..
[的]字有(di)发音..
[传]字有(chuan)发音..
[传]字有(zhuan)发音..
[人]字有(ren)发音..
最终结果:zhongguorenlongdedichuanzhuanren
2、扩展汉字 (比如自造字,或者汉字多音不全)
因为上图比较麻烦,所以在这里只做文本说明: 1、先把pinyin4j.jar反编译得到源码文件夹;2、找到文件夹目录下的pinyindb文件夹下的unicode_to_hanyu_pinyin.txt,按原格式添加新的中文,或者更改原汉字音节;3、将修改后的文件重新做成jar包替换原jar包即可。
3、资源下载
pinyin4j最新jar包(包含源码):pinyin4j最新jar包下载
java反编译工具:java反编译工具下载