1 汉字转换为拼音
package com.pinyin4j;
import java.util.Arrays;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
public class TestPingyin {
public static void main(String[] args) throws BadHanyuPinyinOutputFormatCombination {
getPinyin('江');
getPinyin('俊');
getPinyin('升');
}
private static void getPinyin(char c) {
String[] str = PinyinHelper.toHanyuPinyinStringArray(c);
System.out.println(Arrays.toString(str));
}
}
结果: [jiang1]
[jun4, zun4, juan4]
[sheng1]
可以得知:
PinyinHelper.toHanyuPinyinStringArray(c)
该方法的返回数组包含这个字的所有读音的拼音。每个读音最后有个数字就是音调(第一声 第二声 第三声 第四声,这个不用解释了
2 还可以使用HanyuPinyinOutputFormat来格式化返回拼音的格式。
package com.pinyin4j;
import java.util.Arrays;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
public class TestPingyin {
public static void main(String[] args) throws BadHanyuPinyinOutputFormatCombination {
getFormatPinyin('女');
}
private static void getFormatPinyin(char c)
throws BadHanyuPinyinOutputFormatCombination {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
//HanyuPinyinCaseType.UPPERCASE 大写字母
//HanyuPinyinCaseType.LOWERCASE 小写字母
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
//HanyuPinyinToneType.WITHOUT_TONE 不带音标
//HanyuPinyinToneType.WITH_TONE_NUMBER 带音标(1-4数字代表音标)
//HanyuPinyinToneType.WITH_TONE_MARK 直接用音标符号 (必须HanyuPinyinVCharType.WITH_U_UNICODE否则异常)
format.setToneType(HanyuPinyinToneType.WITH_TONE_NUMBER);
// HanyuPinyinVCharType.WITH_V:用v表示ü (nv)
// HanyuPinyinVCharType.WITH_U_AND_COLON:用"u:"表示ü (nu:)
// HanyuPinyinVCharType.WITH_U_UNICODE:直接用ü (nü)
format.setVCharType(HanyuPinyinVCharType.WITH_U_AND_COLON);
String[] str = PinyinHelper.toHanyuPinyinStringArray(c, format);
System.out.println(Arrays.toString(str));
}
private static void getPinyin(char c) {
String[] str = PinyinHelper.toHanyuPinyinStringArray(c);
System.out.println(Arrays.toString(str));
}
}
结果:
[nu:3, ru3]
总结:
虽然pinyin4j很好用,但是还是有局限的。以上代码只能获取单个汉字的拼音,但是不能获取一个包含多音字的词的拼音。例如“重庆”,无法判断到底是“chongqing”还是“zhongqing”,pinyin4j不能通过上下文来判断多音字的读音。