java汉语转拼音pinyin4j、jpinyin、tinypinyin

您所在的位置:网站首页 频道翻译成拼音 java汉语转拼音pinyin4j、jpinyin、tinypinyin

java汉语转拼音pinyin4j、jpinyin、tinypinyin

2024-01-09 03:00| 来源: 网络整理| 查看: 265

maven依赖 com.belerweb pinyin4j 2.5.0 com.github.stuxuhai jpinyin 1.1.8 com.github.promeg tinypinyin 2.0.3 com.github.promeg tinypinyin-lexicons-java-cncity 2.0.3 Pinyin4jUtil package com.utils; 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; import java.util.HashSet; import java.util.Set; public class Pinyin4jUtil { //将汉字转换为拼音全拼 首字母大写,多音字的返回多个拼音以逗号分隔 public static String getPinyin(String chinese) { return getPinyinZh_CN(makeStringByStringSet(chinese)); } //将汉字转换为拼音全拼 大写,多音字的返回多个拼音以逗号分隔 public static String getPinyinToUpperCase(String chinese) { return getPinyinZh_CN(makeStringByStringSet(chinese)).toUpperCase(); } //将汉字转换为拼音全拼 小写,多音字的返回多个拼音以逗号分隔 public static String getPinyinToLowerCase(String chinese) { return getPinyinZh_CN(makeStringByStringSet(chinese)).toLowerCase(); } //将汉字转换为拼音简拼 大写,多音字的返回多个拼音以逗号分隔 public static String getPinyinJianPin(String chinese) { String[] strArray = getPinyin(chinese).split(","); String strChar = ""; for (String str : strArray) { char arr[] = str.toCharArray(); // 将字符串转化成char型数组 for (int i = 0; i // 判断是否是大写字母 strChar += new String(arr[i] + ""); } } strChar += ","; } return strChar.substring(0,strChar.length()-1); } //字符集转换 public static Set makeStringByStringSet(String chinese) { char[] chars = chinese.toCharArray(); if (chinese != null && !chinese.trim().equalsIgnoreCase("")) { char[] srcChar = chinese.toCharArray(); String[][] temp = new String[chinese.length()][]; for (int i = 0; i try { temp[i] = PinyinHelper.toHanyuPinyinStringArray( chars[i], getDefaultOutputFormat()); } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } } else if (((int) c >= 65 && (int) c = 97 && (int) c String.valueOf(srcChar[i]) }; } else { temp[i] = new String[] { "" }; } } String[] pingyinArray = Exchange(temp); Set zhongWenPinYin = new HashSet(); for (int i = 0; i HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); format.setCaseType(HanyuPinyinCaseType.LOWERCASE);// 小写 format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 没有音调数字 format.setVCharType(HanyuPinyinVCharType.WITH_U_AND_COLON);// u显示 return format; } public static String[] Exchange(String[][] strJaggedArray) { String[][] temp = DoExchange(strJaggedArray); return temp[0]; } private static String[][] DoExchange(String[][] strJaggedArray) { int len = strJaggedArray.length; if (len >= 2) { int len1 = strJaggedArray[0].length; int len2 = strJaggedArray[1].length; int newlen = len1 * len2; String[] temp = new String[newlen]; int Index = 0; for (int i = 0; i temp[Index] = capitalize(strJaggedArray[0][i]) + capitalize(strJaggedArray[1][j]); Index++; } } String[][] newArray = new String[len - 1][]; for (int i = 2; i return strJaggedArray; } } //首字母大写 public static String capitalize(String s) { char ch[]; ch = s.toCharArray(); if (ch[0] >= 'a' && ch[0] StringBuilder str = new StringBuilder(); int i = 0; for (String s : stringSet) { if (i == stringSet.size() - 1) { str.append(s); } else { str.append(s + ","); } i++; } return str.toString(); } // 将汉字转换为全拼 小写 不识别多音字 public static String getPingYin(String src) { char[] t1 = null; t1 = src.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 t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3); t4 += t2[0]; } else t4 += java.lang.Character.toString(t1[i]); } // System.out.println(t4); return t4; } catch (BadHanyuPinyinOutputFormatCombination e1) { e1.printStackTrace(); } return t4; } // 汉字转拼音 小写首字母 不识别多音字 public static String getPinYinHeadChar(String str) { String convert = ""; for (int j = 0; j convert += pinyinArray[0].charAt(0); } else { convert += word; } } return convert; } //测试方法 public static void main(String[] args) { System.out.println(getPinyinJianPin("中牟县"));//ZMX,ZMX System.out.println(getPinyin("中牟县"));//ZhongMuXian,ZhongMouXian System.out.println(getPingYin("中牟县"));//zhongmouxian } } JpPinyinUtil package com.utils; import com.github.stuxuhai.jpinyin.ChineseHelper; import com.github.stuxuhai.jpinyin.PinyinFormat; import com.github.stuxuhai.jpinyin.PinyinHelper; public class JpPinyinUtil{ /** * 转换为有声调的拼音字符串 * @param pinYinStr 汉字 * @return 有声调的拼音字符串 */ public static String changeToMarkPinYin(String pinYinStr){ String tempStr = null; try { tempStr = PinyinHelper.convertToPinyinString(pinYinStr, " ", PinyinFormat.WITH_TONE_MARK); } catch (Exception e) { e.printStackTrace(); } return tempStr; } /** * 转换为数字声调字符串 * @param pinYinStr 需转换的汉字 * @return 转换完成的拼音字符串 */ public static String changeToNumberPinYin(String pinYinStr){ String tempStr = null; try { tempStr = PinyinHelper.convertToPinyinString(pinYinStr, " ", PinyinFormat.WITH_TONE_NUMBER); } catch (Exception e) { e.printStackTrace(); } return tempStr; } /** * 转换为不带音调的拼音字符串 * @param pinYinStr 需转换的汉字 * @return 拼音字符串 */ public static String changeToTonePinYin(String pinYinStr){ String tempStr = null; try { tempStr = PinyinHelper.convertToPinyinString(pinYinStr, "", PinyinFormat.WITHOUT_TONE); } catch (Exception e) { e.printStackTrace(); } return tempStr; } /** * 转换为每个汉字对应拼音首字母字符串 * @param pinYinStr 需转换的汉字 * @return 拼音字符串 */ public static String changeToGetShortPinYin(String pinYinStr){ String tempStr = null; try { tempStr = PinyinHelper.getShortPinyin(pinYinStr); } catch (Exception e) { e.printStackTrace(); } return tempStr; } /** * 检查汉字是否为多音字 * @param pinYinStr 需检查的汉字 * @return true 多音字,false 不是多音字 */ public static boolean checkPinYin(char pinYinStr){ boolean check = false; try { check = PinyinHelper.hasMultiPinyin(pinYinStr); } catch (Exception e) { e.printStackTrace(); } return check; } /** * 简体转换为繁体 * @param pinYinStr * @return */ public static String changeToTraditional(String pinYinStr){ String tempStr = null; try { tempStr = ChineseHelper.convertToTraditionalChinese(pinYinStr); } catch (Exception e) { e.printStackTrace(); } return tempStr; } /** * 繁体转换为简体 * @param pinYinSt * @return */ public static String changeToSimplified(String pinYinSt){ String tempStr = null; try { tempStr = ChineseHelper.convertToSimplifiedChinese(pinYinSt); } catch (Exception e) { e.printStackTrace(); } return tempStr; } public static void main(String[] args) { System.out.println(checkPinYin('牟'));//true System.out.println(changeToTonePinYin("中牟县"));//zhongmuxian } } TinyPinyinUtil package com.utils; import com.github.promeg.pinyinhelper.Pinyin; import com.github.promeg.pinyinhelper.PinyinMapDict; import com.github.promeg.tinypinyin.lexicons.java.cncity.CnCityDict; import java.util.HashMap; import java.util.Map; /** * @author ywx * @className TinyPinyinUtil * @description 参考网址:https://github.com/promeG/TinyPinyin * @date 2020/5/14 10:12 **/ public class TinyPinyinUtil { static { Pinyin.init(Pinyin.newConfig().with(CnCityDict.getInstance()));// 添加中文城市词典 // 添加自定义词典 Pinyin.init(Pinyin.newConfig() .with(new PinyinMapDict() { @Override public Map mapping() { HashMap map = new HashMap(); map.put("重庆", new String[]{"CHONG", "QING"}); map.put("中牟县", new String[]{"ZHONG", "MU", "XIAN"}); return map; } })); } //汉语转大写拼音 public static String toUpperPinyin(String str, String separator){ return Pinyin.toPinyin(str,separator); } //汉语转大写拼音 public static String toUpperPinyin(String str){ return Pinyin.toPinyin(str,""); } //汉语转小写拼音 public static String toLowerPinyin(String str, String separator){ return Pinyin.toPinyin(str,separator).toLowerCase(); } //汉语转小写拼音 public static String toLowerPinyin(String str){ return Pinyin.toPinyin(str,"").toLowerCase(); } //测试方法 public static void main(String[] args) { System.out.println(toUpperPinyin("中牟县"));//ZHONGMUXIAN System.out.println(toLowerPinyin("中牟县"));//zhongmuxian } } 总结

Pinyin4jUtil含多音字的词语返回多个拼音以逗号分隔 JpPinyinUtil可以自动识别含多音字的常用词语 TinyPinyinUtil可以添加自定义词典处理含多音字的词语 参考网址:https://github.com/promeG/TinyPinyin



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3