The examples in this article share the specific code of the Java Chinese Characters to Pinyin tool for your reference. The specific content is as follows
import com.google.common.base.Strings;import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.util.ArrayList;import java.util.List;import java.util.Locale;import java.util.TreeSet;public class PinyinUtils { private static final Logger logger = LoggerFactory.getLogger(PinyinUtils.class); /** * Single word parsing* * @param str first * @return */ public static String[] convert(String str) { String[] reslut = null; HanyuPinyinOutputFormat hanyuPinyinOutputFormat = new HanyuPinyinOutputFormat(); hanyuPinyinOutputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE); try { reslut = PinyinHelper.toHanyuPinyinStringArray(str.charAt(0), hanyuPinyinOutputFormat); TreeSet<String> stringTreeSet = new TreeSet<>(); for (int i = 0; i < reslut.length; i++) { if(reslut.length >=3) { break; } stringTreeSet.add(reslut[i].replace("u:","v")); } reslut = new String[stringTreeSet.size()]; reslut = stringTreeSet.toArray(reslut); } catch (BadHanyuPinyinOutputFormatCombination badHanyuPinyinOutputFormatCombination) { badHanyuPinyinOutputFormatCombination.printStackTrace(); } catch (Exception e) { logger.error("[convert]: ", e); } return reslut; } /** * Phrase parsing (full writing) * * @param chs * @return */ public static String getSelling(String chs) { return translate(chs, false); } /** * Chinese characters to pinyin* * @param chs * @param acronym * @return */ private static String translate(String chs, boolean acronym) { StringBuffer buffer=new StringBuffer(); if (Strings.isNullOrEmpty(chs)) return ""; try { List<List<String>> temps = new ArrayList<>(); int len = chs.length(); int len1 = 0; for (int i = 0; i < len; i++) { List<String> stringList = new ArrayList<>(); String key = chs.charAt(i) + ""; if (key.getBytes().length >= 2) { String[] temp = convert(key); if(temp.length == 0) { continue; } if (temp == null) { stringList.add(""); } else { for (String v : temp) { stringList.add(v); } } } else { stringList.add(key); } temps.add(stringList); len1++; } List<List<String>> t = new ArrayList<>(); for (int i = 0; i < len1; i++) { List<String> currentList = new ArrayList<>(); List<String> stringList = temps.get(i); if (stringList != null) { for (String s : stringList) { if (acronym) { s = s.charAt(0) + ""; } if (i > 0) { List<String> preList = t.get(i - 1); if (preList != null) { for (String s1 : preList) { currentList.add(s1 + s); } } } } else{ currentList.add(s); } } } t.add(i, currentList); } if (t.size()>0){ List<String> currentList= t.get(t.size()-1); if (currentList!=null){ for(String current : currentList){ buffer.append(current); buffer.append(""); } } } return buffer.toString(); } catch (Exception e) { logger.error("[getSortLetters]: ", e); return ""; } } /** * Phrase parsing (abbreviation) * * @param chs * @return */ public static String getSmallSelling(String chs) { return translate(chs, true); } /** * Get the initial letter* * @return */ public static String getSortLetters(String pingyin) { try { String sortString = pingyin.substring(0, 1).toUpperCase(Locale.getDefault()); // Regular expression to determine whether the first letter is an English letter if (sortString.matches("[AZ]")) { return sortString.toUpperCase(Locale.getDefault()); } } catch (Exception e) { logger.error("[getSortLetters]: ", e); } return "#"; } public static void main(String [] args) { PinyinUtils p = new PinyinUtils(); System.out.println(p.getSelling("single")); System.out.println(p.getSmallSelling("test")); }} The above is all the content of this article. I hope it will be helpful to everyone's learning and I hope everyone will support Wulin.com more.