汉字转拼音

  1 package com.lenovo.mvs.utils;
  2 
  3 import static net.sourceforge.pinyin4j.PinyinHelper.toHanyuPinyinStringArray;
  4 
  5 import org.slf4j.Logger;
  6 import org.slf4j.LoggerFactory;
  7 
  8 import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
  9 import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
 10 import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
 11 import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
 12 import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
 13 
 14 /**
 15  * Chinese characters to pinyin
 16  * 
 17  * @author songyz
 18  *
 19  */
 20 public class ChineseUtil {
 21 
 22     private static final Logger logger = LoggerFactory.getLogger(ChineseUtil.class);
 23 
 24     /**
 25      * Get the complete pinyin
 26      * 
 27      * @param name
 28      * @return
 29      */
 30     public static String getCompletePingYin(String name) {
 31         char[] t1 = null;
 32         t1 = name.toCharArray();
 33         String[] t2 = new String[t1.length];
 34         HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();
 35         t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);
 36         t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
 37         t3.setVCharType(HanyuPinyinVCharType.WITH_V);
 38         String t4 = "";
 39         int t0 = t1.length;
 40         try {
 41             for (int i = 0; i < t0; i++) {
 42                 // 判断是否为汉字字符
 43                 if (Character.toString(t1[i]).matches("[\\u4E00-\\u9FA5]+")) {
 44                     t2 = toHanyuPinyinStringArray(t1[i], t3);
 45                     t4 += t2[0];
 46                 } else
 47                     t4 += Character.toString(t1[i]);
 48             }
 49             // System.out.println(t4);
 50             return t4;
 51         } catch (BadHanyuPinyinOutputFormatCombination e) {
 52             logger.error("ChineseToEnglish for [{}] getFullPingYin is failure ! reason is [{}]", name, e.getMessage());
 53             throw new RuntimeException(e);
 54         }
 55     }
 56 
 57     /**
 58      * To obtain a simple pinyin
 59      * 
 60      * @param name
 61      * @return
 62      */
 63     public static String getSimplePingYin(String name) {
 64         if (name.length() > 1) {
 65             return getCompletePingYin(name.substring(0, 1)) + getPinYinHeadChar(name.substring(1));
 66         } else {
 67             return getCompletePingYin(name);
 68         }
 69 
 70     }
 71 
 72     /**
 73      * Get pinyin initials
 74      * 
 75      * @param name
 76      * @return
 77      */
 78     public static String getPinYinHeadChar(String name) {
 79         String convert = "";
 80         for (int j = 0; j < name.length(); j++) {
 81             char word = name.charAt(j);
 82             String[] pinyinArray = toHanyuPinyinStringArray(word);
 83             if (pinyinArray != null) {
 84                 convert += pinyinArray[0].charAt(0);
 85             } else {
 86                 convert += word;
 87             }
 88         }
 89         return convert;
 90     }
 91 
 92     // 将字符串转移为ASCII码
 93     public static String getCnASCII(String cnStr) {
 94         StringBuffer strBuf = new StringBuffer();
 95         byte[] bGBK = cnStr.getBytes();
 96         for (int i = 0; i < bGBK.length; i++) {
 97             strBuf.append(Integer.toHexString(bGBK[i] & 0xff));
 98         }
 99         return strBuf.toString();
100     }
101 
102     public static void main(String[] args) {
103         System.out.println(getPinYinHeadChar("宋印赠"));
104         System.out.println(getSimplePingYin("宋印赠"));
105         System.out.println(getCompletePingYin("宋印赠"));
106         System.out.println(getCnASCII("宋印赠"));
107     }
108 }

需要引入jar包支持,本人习惯maven地址,如下
1             <dependency>
2             <groupId>com.belerweb</groupId>
3             <artifactId>pinyin4j</artifactId>
4             <version>2.5.0</version>
5         </dependency>            

 





 

posted @ 2016-12-22 11:44  叶枫声  阅读(686)  评论(0编辑  收藏  举报