zoukankan      html  css  js  c++  java
  • 汉字转拼音

      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>            




  • 相关阅读:
    Caused by: java.lang.IllegalStateException: Immutable bitmap passed to Canvas constructor
    Android 数据库 OrmLite Failed to open database
    【译】Android 数据库 ORMLite
    SIP
    Android LRUCache
    Enumeration与Iterator的对比
    URI, URL, and URN
    adb device offline 解决办法
    AudioFormat
    AudioTrack
  • 原文地址:https://www.cnblogs.com/songyz/p/6210566.html
Copyright © 2011-2022 走看看