首页

定义拼音汉字工具类实现汉字字符串转为全拼音字符串、汉字字符串转大写首字母字符串处理Java代码示例

标签:汉字转为拼音,汉字转首字母,汉字拼音工具类,pinyin4j-2.5.0.jar     发布时间:2020-01-01   

一、前言

基于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!