批量汉字转拼音公式

2023-03-21 12:00

前面的文章中介绍了pinyin4j这款开源java库。下面在贴上一个示例ConvertPinyin.java,可以结合前面的文章,根据自己项目的实际需求灵活使用。

package com.gl.util;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 ConvertPinyin {/** * 汉字转全拼 * * @param str * @return * @throws Exception */public static String getPinyin(String str) throws Exception {if (str == null || str.length() == 0) {return ;}char[] t1 = null;t1 = str.toCharArray();String[] t2 = new String[t1.length];// 设置汉字拼音输出的格式HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 小写t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调t3.setVCharType(HanyuPinyinVCharType.WITH_V);String t4 = ;int t0 = t1.length;try {for (int i = 0; i t0; i ) {// 判断是否为汉字字符if (Character.toString(t1[i]).matches([\\u4E00-\\u9FA5] )) {// 将汉字的几种全拼都存到t2数组中t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);t4 = t2[0];// 取出该汉字全拼的第一种读音并连接到字符串t4后} else {// 如果不是汉字字符,直接取出字符并连接到字符串t4后t4 = Character.toString(t1[i]);}}} catch (BadHanyuPinyinOutputFormatCombination e) {throw e;}return t4;}/** * 汉字转简拼 * * @param str * @return String */public static String getPinYinHeadChar(String str) {String convert = ;if (str == null || str.length() == 0) {return convert;}for (int j = 0; j str.length(); j ) {char word = str.charAt(j);// 提取汉字的首字母String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);if (pinyinArray != null) {convert = pinyinArray[0].charAt(0);} else {convert = word;}}return convert.toUpperCase();}public static void main(String[] arg0) throws Exception {String str = 好好学习;System.out.println(getPinyin(str));System.out.println(getPinYinHeadChar(str));}}

这个示例的运行结果如下(显示全拼和首字母):

haohaoxuexiHHXX

评论问答