1 package com.baihui.core.utils; 2 import net.sourceforge.pinyin4j.PinyinHelper; 3 import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; 4 import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; 5 import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; 6 import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType; 7 import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination; 8 /** 9 * 10 * @author 11 * @Description 汉字到拼音的处理类 12 */ 13 public class GetPinyinUtil { 14 15 /** 16 * 得到 全拼 17 * 18 * @param src 19 * @return 20 */ 21 public static String getPingYin(String src) { 22 char[] t1 = null; 23 t1 = src.toCharArray(); 24 String[] t2 = new String[t1.length]; 25 HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat(); 26 t3.setCaseType(HanyuPinyinCaseType.LOWERCASE); 27 t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE); 28 t3.setVCharType(HanyuPinyinVCharType.WITH_V); 29 String t4 = ""; 30 int t0 = t1.length; 31 try { 32 for (int i = 0; i < t0; i++) { 33 // 判断是否为汉字字符 34 if (java.lang.Character.toString(t1[i]).matches("[\\u4E00-\\u9FA5]+")) { 35 t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3); 36 t4 += t2[0]; 37 } else { 38 t4 += java.lang.Character.toString(t1[i]); 39 } 40 } 41 return t4; 42 } catch (BadHanyuPinyinOutputFormatCombination e1) { 43 e1.printStackTrace(); 44 } 45 return t4; 46 } 47 48 /** 49 * 得到中文首字母 50 * 51 * @param str 52 * @return 53 */ 54 public static String getPinYinHeadChar(String str) { 55 String convert = ""; 56 for (int j = 0; j < str.length(); j++) { 57 char word = str.charAt(j); 58 String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word); 59 if (pinyinArray != null) { 60 convert += pinyinArray[0].charAt(0); 61 } else { 62 convert += word; 63 } 64 } 65 return convert; 66 } 67 68 /** 69 * 验证是否包含中文 70 */ 71 public static boolean containsChinese(String s) { 72 if ((s == null) || ("".equals(s.trim()))) 73 return false; 74 for (int i = 0; i < s.length(); ++i) 75 if (isChinese(s.charAt(i))) 76 return true; 77 78 return false; 79 } 80 81 public static boolean isChinese(char a) { 82 int v = a; 83 return ((v >= 19968) && (v <= 171941)); 84 } 85 86 /** 87 * 小于6个字符的字符串得到中文首字母 88 */ 89 public static String getDocFieldValByPinyin(String str){ 90 return str; 91 92 /*if(str.length()>6) 93 return str; 94 if(!containsChinese(str)) 95 return str; 96 return str+" "+getPinYinHeadChar(str);*/ 97 } 98 99 100 /** 101 * 将字符串转移为ASCII码 102 * 103 * @param cnStr 104 * @return 105 */ 106 public static String getCnASCII(String cnStr) { 107 StringBuffer strBuf = new StringBuffer(); 108 byte[] bGBK = cnStr.getBytes(); 109 for (int i = 0; i < bGBK.length; i++) { 110 // System.out.println(Integer.toHexString(bGBK[i]&0xff)); 111 strBuf.append(Integer.toHexString(bGBK[i] & 0xff)); 112 } 113 return strBuf.toString(); 114 } 115 public static String GetPyString(String chinese) throws BadHanyuPinyinOutputFormatCombination{ 116 HanyuPinyinOutputFormat outputFormat = new HanyuPinyinOutputFormat(); 117 String chineseTerm; 118 boolean isFirstChar = true; 119 if (isFirstChar) { 120 StringBuilder sb = new StringBuilder(); 121 for (int i = 0; i < chinese.length(); ++i) { 122 String[] array = PinyinHelper.toHanyuPinyinStringArray(chinese.charAt(i), outputFormat); 123 if (array != null) { if (array.length == 0) 124 continue; 125 126 String s = array[0]; 127 char c = s.charAt(0); 128 129 sb.append(c); } 130 } 131 chineseTerm = sb.toString(); 132 } else { 133 chineseTerm = PinyinHelper.toHanyuPinyinString(chinese, outputFormat, ""); 134 } 135 return chineseTerm; 136 } 137 138 public static void main(String[] args) { 139 System.out.println("----------"+getPingYin("行业")); 140 } 141 142 }