zoukankan      html  css  js  c++  java
  • 通过汉字获取全拼

    pom引用 
    <dependency>
       <groupId>com.belerweb</groupId>
       <artifactId>pinyin4j</artifactId>
       <version>${pinyin4j.version}</version>
    </dependency>
    <dependency>
       <groupId>org.codehaus.xfire</groupId>
       <artifactId>xfire-core</artifactId>
       <version>${xfire.version}</version>
    </dependency>

    代码

    package org.ibase4j.core.util;
    
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    
    import net.sourceforge.pinyin4j.PinyinHelper;
    import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
    import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
    import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
    import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
    import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
    
    /**
     * 汉字辅助类
     * 
     * @author ShenHuJie
     */
    public final class PinyinUtil {
       private PinyinUtil() {
       }
    
       static Logger logger = LogManager.getLogger();
    
       /**
        * 将汉字转换为全拼
        * 
        * @param src
        * @return String
        */
       public static final String getPinYin(String src) {
          char[] t1 = null;
          t1 = src.toCharArray();
          String[] t2 = new String[t1.length];
          // 设置汉字拼音输出的格式
          HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();
          t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);
          t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
          t3.setVCharType(HanyuPinyinVCharType.WITH_V);
          String t4 = "";
          int t0 = t1.length;
          try {
             for (int i = 0; i < t0; i++) {
                // 判断是否为汉字字符
                if (Character.toString(t1[i]).matches("[\u4E00-\u9FA5]+")) {
                   t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);// 将汉字的几种全拼都存到t2数组中
                   t4 += t2[0];// 取出该汉字全拼的第一种读音并连接到字符串t4后
                } else {
                   // 如果不是汉字字符,直接取出字符并连接到字符串t4后
                   t4 += Character.toString(t1[i]);
                }
             }
          } catch (BadHanyuPinyinOutputFormatCombination e) {
             logger.error("", e);
          }
          return t4;
       }
    
       /**
        * 将汉字转换为全拼
        * 
        * @param src
        * @return String
        */
       public static final String getCamelPinYin(String src) {
          char[] t1 = null;
          t1 = src.toCharArray();
          String[] t2 = new String[t1.length];
          // 设置汉字拼音输出的格式
          HanyuPinyinOutputFormat t3 = new HanyuPinyinOutputFormat();
          t3.setCaseType(HanyuPinyinCaseType.LOWERCASE);
          t3.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
          t3.setVCharType(HanyuPinyinVCharType.WITH_V);
          String t4 = "", t = "";
          int t0 = t1.length;
          try {
             for (int i = 0; i < t0; i++) {
                // 判断是否为汉字字符
                if (Character.toString(t1[i]).matches("[\u4E00-\u9FA5]+")) {
                   t2 = PinyinHelper.toHanyuPinyinStringArray(t1[i], t3);// 将汉字的几种全拼都存到t2数组中
                   t = t2[0];// 取出该汉字全拼的第一种读音并连接到字符串t4后
                } else {
                   // 如果不是汉字字符,直接取出字符并连接到字符串t4后
                   t = Character.toString(t1[i]);
                }
                t = t.substring(0, 1).toUpperCase() + t.substring(1);
                t4 += t;
             }
          } catch (BadHanyuPinyinOutputFormatCombination e) {
             logger.error("", e);
          }
          return t4;
       }
    
       /**
        * 提取每个汉字的首字母
        * 
        * @param str
        * @return String
        */
       public static final String getPinYinHeadChar(String str) {
          String convert = "";
          for (int j = 0; j < str.length(); j++) {
             char word = str.charAt(j);
             // 提取汉字的首字母
             String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(word);
             if (pinyinArray != null) {
                convert += pinyinArray[0].charAt(0);
             } else {
                convert += word;
             }
          }
          return convert;
       }
    
       /**
        * 提取每个汉字的大写首字母
        * 
        * @param str
        * @return String
        */
       public static final String getPinYinHeadUperChar(String str) {
          return getPinYinHeadChar(str).toUpperCase();
       }
    
       public static void main(String[] args) {
          String cnStr = "中华人民共和国";
          System.out.println(getPinYin(cnStr));
          System.out.println(getCamelPinYin(cnStr));
          System.out.println(getPinYinHeadChar(cnStr));
          System.out.println(getPinYinHeadUperChar(cnStr));
       }
    }
  • 相关阅读:
    C++如何调用父类中的方法
    关于QStandardItemMode的资料
    Qt的信号和槽的使用方法练习
    Redirecting Standard I/O to Windows Console
    C++头文件的工作原理
    《深入浅出MFC》第七章 简单而完整:MFC骨干程序
    《深入浅出MFC》第六章 MFC程序的生死因果
    《深入浅出MFC》第五章 总观Application Framework
    《深入浅出MFC》第四章 Visual C++集成开发环境
    nexus使用记录
  • 原文地址:https://www.cnblogs.com/zyzcj/p/6653672.html
Copyright © 2011-2022 走看看