静态工具类:PinyinHelper
方法:String[] pinyin = PinyinHelper.toHanyuPinyinStringArray(“七零八六”);
一、设置格式
创建拼音格式化对象:
HanyuPinyinOutputFormat outputFormat = newHanyuPinyinOutputFormat();
设置声调格式:
outputFormat.setToneType(HanyuPinyinToneType);
参数HanyuPinyinToneType的常量对象:
HanyuPinyinToneType.WITH_TONE_NUMBER 数字表示声调。
HanyuPinyinToneType.WITH_TONE 无声调表示。
HanyuPinyinToneType.WITH_TONE_MARK 声调符号表示。
设置ü的显示格式:
outputFormat.setVCharType(HanyuPinyinVCharType);
参数HanyuPinyinVCharType的常量对象:
HanyuPinyinVCharType.WITH_U_AND_COLON U: 表示ü
HanyuPinyinVCharType.WITH_V 用v表示
HanyuPinyinVCharType.WITH_U_UNICODE 用ü表示
设置大小写格式
outputFormat.setCaseType(HanyuPinyinCaseType);
参数HanyuPinyinCaseType的常量对象:
HanyuPinyinCaseType.LOWERCASE 全小写
HanyuPinyinCaseType.UPPERCASE 全大写
二、拼音转换
利用PinyinHelper工具类转化将格式以参数形式传入。
String[] pinyin = PinyinHelper.toHanyuPinyinStringArray(“七零八六”,outputFormat);
demo:
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 PinYinUtil {
public static HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat();
static{
outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
outputFormat.setToneType(HanyuPinyinToneType.WITH_TONE_MARK);
outputFormat.setVCharType(HanyuPinyinVCharType.WITH_U_UNICODE);
}
public static void main(String[] args) {
String data = "七零八六";
System.out.println(toPinyin(data));
}
public static String toPinyin(String input) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
if (c <= 255) {
sb.append(c);
} else {
String pinyin = null;
try {
String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, outputFormat);
pinyin = pinyinArray[0];
} catch (BadHanyuPinyinOutputFormatCombination e) {
} catch (NullPointerException e) {
// 如果是日文,可能抛出该异常
}
if (pinyin != null) {
sb.append(pinyin);
}
}
}
return sb.toString();
}
}