篇首语:本文由小编为大家整理,主要介绍了Java获取中文汉字的拼音相关的知识,希望对你有一定的参考价值。
参考地址:https://www.cnblogs.com/langtianya/p/7098089.html
示例代码:
1 package com.tgram.sboot.util; 2 3 import net.sourceforge.pinyin4j.PinyinHelper; 4 import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; 5 import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; 6 import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; 7 import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType; 8 import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; 9 10 public class ConvertSpellUtil11 {12 /**13 * 传入中文汉字字符串,转换出对应拼音字符串14 * 注:如果传入的中文中有任一同音字都会返回字符串信息:false15 * @param src 中文汉字字符串16 * @param hasBlank 是否需要有空格17 * @return 对应拼音字符串18 */19 public static String convertToSpell(String src,boolean hasBlank)20 {21 char[] t1 = src.toCharArray();22 String[] t2 ;23 // 设置汉字拼音输出的格式24 HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();25 t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);26 t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);27 t3.setVCharType(HanyuPinyinVCharType.WITH_V);28 StringBuilder t4 = new StringBuilder();29 int t0 = t1.length;30 try31 {32 for (int i = 0; i < t0; i++)33 {34 // 判断能否为汉字字符35 if (Character.toString(t1[i]).matches("[\\\\u4E00-\\\\u9FA5]+"))36 {37 // 将汉字的几种全拼都存到t2数组中,由于汉字会有多音字,所以就只取第一个元素38 t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);39 if (t2 != null)40 {41 if(!hasBlank)42 {43 t4.append(t2[0]); // 取数组第一个元素拼接成拼音字符串44 }45 else46 {47 if(i == 0 || i == t0 - 1)48 {49 t4.append(t2[0]); //第一个和最后一个不加空格50 }51 else52 {53 t4.append(" ").append(t2[0]);54 }55 }56 }57 }58 else59 {60 // 如果不是汉字字符,间接取出字符并连接到字符串t4后61 t4.append(Character.toString(t1[i]));62 }63 }64 }65 catch (BadHanyuPinyinOutputFormatCombination e)66 {67 e.printStackTrace();68 }69 70 // 返回拼音字符串(如果全是大写的非中文的字符可以转成全小写,具体看需要)71 return t4.toString().toLowerCase();72 }73 74 public static void main(String[] args)75 {76 // 结果:false: diedaimeigehanzidepinyin!!!77 // true: die dai meige han zi de pin yin!!!78 String polyphone = ConvertSpellUtil.convertToSpell("迭代每ge汉字的拼音!!!",true);79 System.out.println(polyphone);80 81 // 结果:全字母true和false结果一样: helloworld,i love java!!!82 String polyphone2 = ConvertSpellUtil83 .convertToSpell(" HELLOWORLD,I LOVE JAVA!!! ",true);84 System.out.println(polyphone2);85 86 // 结果:true结果: ni hao shi jie,i love java!!!87 // false结果: nihaoshijie,i love java!!!88 String polyphone3 = ConvertSpellUtil89 .convertToSpell(" 你好世界,I LOVE JAVA!!! ",false);90 System.out.println(polyphone3);91 }92 }
以上是关于Java获取中文汉字的拼音的主要内容,如果未能解决你的问题,请参考以下文章