支持以下功能:
1、获取中文字符串的一组全拼
2、获取中文字符串的一组首字母
3、获取中文字符串的所有全拼组合(包括多音字)
4、获取中文字符串的所有首字母组合(包括多音字)
5、jar 包下载 :点击去下载
import java.util.ArrayList; import java.util.List; 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; /** * @author dengjihai * @create 2017-11-14 **/ public class PinyinUtil { public static void main(String[] strgs) { System.out.println(getSingleFullPinyin("邓集海")); } /** * 获取中文字符串的一组全拼 * * @param cnString 中文字符串 * @return hanyupinyin汉语拼音 */ public static String getSingleFullPinyin(String cnString) { StringBuilder sb = new StringBuilder(); char[] arr = cnString.toCharArray(); for (char c : arr) { if (c > 128) { try { sb.append(PinyinHelper.toHanyuPinyinStringArray(c, outputFormat)[0]); } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } } else { sb.append(c); } } return sb.toString(); } /** * 获取中文字符串的一组首字母 * * @param cnString 中文字符串 * @return hypy汉语拼音 */ public static String getSingleFirstPinyin(String cnString) { StringBuilder sb = new StringBuilder(); char[] arr = cnString.toCharArray(); for (char c : arr) { if (c > 128) { try { sb.append(PinyinHelper.toHanyuPinyinStringArray(c, outputFormat)[0].charAt(0)); } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } } else { sb.append(c); } } return sb.toString(); } /** * 获取中文字符串的所有全拼组合(包括多音字) * * @param 中文字符串 * @return hanyupinyin汉语拼音的List */ public static List<String> getAllFirstPinyin(String cnString) { char[] arr = cnString.toCharArray(); String[][] strings = new String[cnString.length()][]; for (int i = 0; i < strings.length; i++) { if (arr[i] > 128) { try { String[] tmpStrings = PinyinHelper.toHanyuPinyinStringArray(arr[i], outputFormat); strings[i] = new String[tmpStrings.length]; for (int j = 0; j < tmpStrings.length; j++) { strings[i][j] = tmpStrings[j].substring(0, 1); } } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } } else { strings[i] = new String[]{String.valueOf(arr[i])}; } } List<String> list = new ArrayList<String>(); permuteAndCombine(list, strings, 0, 0, ""); return list; } /** * 获取中文字符串的所有首字母组合(包括多音字) * * @param 中文字符串 * @return hypy汉语拼音的List */ public static List<String> getAllFullPinyin(String cnString) { char[] arr = cnString.toCharArray(); String[][] strings = new String[cnString.length()][]; for (int i = 0; i < strings.length; i++) { if (arr[i] > 128) { try { strings[i] = PinyinHelper.toHanyuPinyinStringArray(arr[i], outputFormat); } catch (BadHanyuPinyinOutputFormatCombination e) { e.printStackTrace(); } } else { strings[i] = new String[]{String.valueOf(arr[i])}; } } List<String> list = new ArrayList<String>(); permuteAndCombine(list, strings, 0, 0, ""); return list; } /** * 二维数组排列组合 * * @return 结果放到list */ private static void permuteAndCombine(List<String> list, String[][] strings, int i, int j, String before) { if (i < strings.length - 1) { for (; j < strings[i].length; j++) { String after = before + strings[i][j]; permuteAndCombine(list, strings, i + 1, 0, after); } } else { for (String str : strings[i]) { String after = before + str; if (!list.contains(after)) { list.add(after); } } } } /** * 定义拼音的输出格式 */ private static HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat(); static { //默认设置小写 outputFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE); //默认设置没有音调 outputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); //默认设置显示v outputFormat.setVCharType(HanyuPinyinVCharType.WITH_V); } public static HanyuPinyinOutputFormat getOutputFormat() { return outputFormat; } public static void setOutputFormat(HanyuPinyinOutputFormat outputFormat) { PinyinUtil.outputFormat = outputFormat; } }
124 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!