Pinyin4j.jar提供了根据汉字返回汉语拼音的方法,并且可以自定义输出格式
Pinyin4j官网:http://pinyin4j.sourceforge.net/
主要使用到的方法
public class PinyinHelper
{
public static String[] toHanyuPinyinStringArray(char c, HanyuPinyinOutputFormat hanyupinyinoutputformat);
}
提供一个中文字符和输出格式,就可以返回这个字的所有读音的汉语拼音
通常会把输出的格式作这样的定义:
HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();
//设置小写
outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
//设置没有音调
outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
//设置显示v
outputFormat.setVCharType(HanyuPinyinVCharType.WITH_V);
更多的输出格式请参考:HanyuPinyinOutputFormat
测试代码:
char c = '长';
try {
String[] strings = PinyinHelper.toHanyuPinyinStringArray(c, outputFormat);
for (int i = 0; i < strings.length; i++) {
System.out.println("strings[" + i + "]: " + strings[i]);
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
结果:
strings[0]: zhang
strings[1]: chang
获取多个汉字的的全拼:
public static String getSingleFullPinyin(String cnString) {
StringBuilder sb = new StringBuilder();
char[] arr = cnString.toCharArray();
for (char c : arr) {
if (c > 128) {
try {
//多个读音的只返回第一个
sb.append(PinyinHelper.toHanyuPinyinStringArray(c, outputFormat)[0]);
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
} else {
sb.append(c);
}
}
return sb.toString();
}
如果需要首字母的话截取全拼的第一个字符就行