一、前言
基于belerweb的pinyin4j-2.5.0.jar包中net.sourceforge.pinyin4j.PinyinHelper拼音工具类,可以实现汉字字符串转为全拼音字母字符串、汉字字符串转为大写首字母字符串。
二、代码示例
package py;@b@@b@import net.sourceforge.pinyin4j.PinyinHelper;@b@import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;@b@import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;@b@import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;@b@import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;@b@import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;@b@@b@public class HanyuPinyinHelper {@b@@b@ /**@b@ * 将文字转为汉语拼音@b@ * @param ChineseLanguage 要转成拼音的中文@b@ */@b@ public static String toHanyuPinyin(String ChineseLanguage) {@b@ @b@ char[] cl_chars = ChineseLanguage.trim().toCharArray();@b@ String hanyupinyin = "";@b@ HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();@b@ defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 输出拼音全部小写@b@ defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调@b@ defaultFormat.setVCharType(HanyuPinyinVCharType.WITH_V);@b@ @b@ try {@b@ for (int i = 0; i < cl_chars.length; i++) {@b@ if (String.valueOf(cl_chars[i]).matches("[\u4e00-\u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音@b@ hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(@b@ cl_chars[i], defaultFormat)[0];@b@ } else {// 如果字符不是中文,则不转换@b@ hanyupinyin += cl_chars[i];@b@ }@b@ }@b@ } catch (BadHanyuPinyinOutputFormatCombination e) {@b@ System.out.println("字符不能转成汉语拼音");@b@ }@b@ return hanyupinyin;@b@ }@b@@b@ public static String getFirstLettersUp(String ChineseLanguage) {@b@ return getFirstLetters(ChineseLanguage, HanyuPinyinCaseType.UPPERCASE);@b@ }@b@@b@ public static String getFirstLettersLo(String ChineseLanguage) {@b@ return getFirstLetters(ChineseLanguage, HanyuPinyinCaseType.LOWERCASE);@b@ }@b@@b@ public static String getFirstLetters(String ChineseLanguage,@b@ HanyuPinyinCaseType caseType) {@b@ char[] cl_chars = ChineseLanguage.trim().toCharArray();@b@ String hanyupinyin = "";@b@ HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();@b@ defaultFormat.setCaseType(caseType);// 输出拼音全部大写@b@ defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调@b@ try {@b@ for (int i = 0; i < cl_chars.length; i++) {@b@ String str = String.valueOf(cl_chars[i]);@b@ if (str.matches("[\u4e00-\u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母@b@ hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(@b@ cl_chars[i], defaultFormat)[0].substring(0, 1);@b@ } else if (str.matches("[0-9]+")) {// 如果字符是数字,取数字@b@ hanyupinyin += cl_chars[i];@b@ } else if (str.matches("[a-zA-Z]+")) {// 如果字符是字母,取字母@b@ hanyupinyin += cl_chars[i];@b@ } else {// 否则不转换@b@ hanyupinyin += cl_chars[i];// 如果是标点符号的话,带着@b@ }@b@ }@b@ } catch (BadHanyuPinyinOutputFormatCombination e) {@b@ System.out.println("字符不能转成汉语拼音");@b@ }@b@ return hanyupinyin;@b@ }@b@@b@ public static String getPinyinString(String ChineseLanguage) {@b@ char[] cl_chars = ChineseLanguage.trim().toCharArray();@b@ String hanyupinyin = "";@b@ HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();@b@ defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 输出拼音全部大写@b@ defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调@b@ try {@b@ for (int i = 0; i < cl_chars.length; i++) {@b@ String str = String.valueOf(cl_chars[i]);@b@ if (str.matches("[\u4e00-\u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母@b@ hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(@b@ cl_chars[i], defaultFormat)[0];@b@ } else if (str.matches("[0-9]+")) {// 如果字符是数字,取数字@b@ hanyupinyin += cl_chars[i];@b@ } else if (str.matches("[a-zA-Z]+")) {// 如果字符是字母,取字母@b@@b@ hanyupinyin += cl_chars[i];@b@ } else {// 否则不转换@b@ }@b@ }@b@ } catch (BadHanyuPinyinOutputFormatCombination e) {@b@ System.out.println("字符不能转成汉语拼音");@b@ }@b@ return hanyupinyin;@b@ }@b@@b@ /**@b@ * 取第一个汉字的第一个字符@b@ * @b@ * @Title: getFirstLetter@b@ * @Description: TODO@b@ * @return String@b@ * @throws@b@ */@b@ public static String getFirstLetter(String ChineseLanguage) {@b@ char[] cl_chars = ChineseLanguage.trim().toCharArray();@b@ String hanyupinyin = "";@b@ HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();@b@ defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);// 输出拼音全部大写@b@ defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调@b@ try {@b@ String str = String.valueOf(cl_chars[0]);@b@ if (str.matches("[\u4e00-\u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母@b@ hanyupinyin = PinyinHelper.toHanyuPinyinStringArray(@b@ cl_chars[0], defaultFormat)[0].substring(0, 1);@b@ ;@b@ } else if (str.matches("[0-9]+")) {// 如果字符是数字,取数字@b@ hanyupinyin += cl_chars[0];@b@ } else if (str.matches("[a-zA-Z]+")) {// 如果字符是字母,取字母@b@@b@ hanyupinyin += cl_chars[0];@b@ } else {// 否则不转换@b@@b@ }@b@ } catch (BadHanyuPinyinOutputFormatCombination e) {@b@ System.out.println("字符不能转成汉语拼音");@b@ }@b@ return hanyupinyin;@b@ }@b@@b@ public static void main(String[] args) {@b@ HanyuPinyinHelper hanyuPinyinHelper = new HanyuPinyinHelper();@b@ //1.将汉字转为拼音@b@ System.out.println(hanyuPinyinHelper.toHanyuPinyin("2020年鼠你最牛,新年开大吉!"));@b@ //2.获取汉字第一个大写拼音首字母@b@ System.out.println(hanyuPinyinHelper.getFirstLettersUp("新年开大吉!"));@b@ }@b@}
控制台打印结果
2020nianshunizuiniu,xinniankaidaji!@b@XNKDJ!