zoukankan      html  css  js  c++  java
  • Java-汉字繁体拼音转换

      1 import com.github.stuxuhai.jpinyin.ChineseHelper;
      2 import com.github.stuxuhai.jpinyin.PinyinFormat;
      3 import com.github.stuxuhai.jpinyin.PinyinHelper;
      4 
      5 /**
      6  * @ClassName: ChineseConvertPinyinUtil
      7  * @Description: 汉语繁体拼音转换工具类
      8  */
      9 public final class ChineseConvertPinyinUtil {
     10     private static final String SPACEMARK = "";
     11     private ChineseConvertPinyinUtil() {}
     12 
     13     /**
     14      * 检查汉字是否为多音字
     15      * @param pinYinStr 需转换的汉字
     16      * @param deleteBlank 转换后去掉非打印字符
     17      * @param spaceMark 非打印字符
     18      * @return true 多音字,false 不是多音字
     19      */
     20     public static boolean checkPinYin(char pinYinStr) {
     21         boolean check = false;
     22         try {
     23             check = PinyinHelper.hasMultiPinyin(pinYinStr);
     24         } catch (Exception e) {
     25             e.printStackTrace();
     26         }
     27         return check;
     28     }
     29 
     30     /**
     31      * 转换为每个汉字对应拼音首字母字符串
     32      * @param pinYinStr 需转换的汉字
     33      * @param deleteBlank 转换后去掉非打印字符
     34      * @param spaceMark 非打印字符
     35      * @return 拼音字符串
     36      */
     37     public static String convertToGetShortPinYin(String pinYinStr, boolean deleteBlank) {
     38         String tempStr = null;
     39         try {
     40             tempStr = PinyinHelper.getShortPinyin(pinYinStr);
     41         } catch (Exception e) {
     42             tempStr = pinYinStr;
     43             e.printStackTrace();
     44         }
     45         if (deleteBlank) {
     46             tempStr = tempStr.replaceAll("\s*", SPACEMARK);
     47         }
     48         return tempStr;
     49     }
     50 
     51     /**
     52      * 转换为有声调的拼音字符串
     53      * @param pinYinStr 汉字
     54      * @param deleteBlank 转换后去掉非打印字符
     55      * @param spaceMark 非打印字符
     56      * @return 有声调的拼音字符串
     57      */
     58     public static String convertToMarkPinYin(String pinYinStr, boolean deleteBlank, String spaceMark) {
     59         String tempStr = pinYinStr;
     60         try {
     61             if (spaceMark == null) {
     62                 spaceMark = SPACEMARK;
     63             }
     64             tempStr = PinyinHelper.convertToPinyinString(pinYinStr, spaceMark, PinyinFormat.WITH_TONE_MARK);
     65 
     66         } catch (Exception e) {
     67             tempStr = pinYinStr;
     68             e.printStackTrace();
     69         }
     70         if (deleteBlank) {
     71             tempStr = tempStr.replaceAll("\s*", SPACEMARK);
     72         }
     73         return tempStr;
     74     }
     75 
     76     /**
     77      * 转换为数字声调字符串
     78      * @param pinYinStr 需转换的汉字
     79      * @param deleteBlank 转换后去掉非打印字符
     80      * @param spaceMark 非打印字符
     81      * @return 转换完成的拼音字符串
     82      */
     83     public static String convertToNumberPinYin(String pinYinStr, boolean deleteBlank, String spaceMark) {
     84         String tempStr = null;
     85         try {
     86             if (spaceMark == null) {
     87                 spaceMark = SPACEMARK;
     88             }
     89             tempStr = PinyinHelper.convertToPinyinString(pinYinStr, spaceMark, PinyinFormat.WITH_TONE_NUMBER);
     90         } catch (Exception e) {
     91             tempStr = pinYinStr;
     92             e.printStackTrace();
     93         }
     94         if (deleteBlank) {
     95             tempStr = tempStr.replaceAll("\s*", SPACEMARK);
     96         }
     97         return tempStr;
     98     }
     99 
    100     /**
    101      * 繁体转换为简体
    102      * @param pinYinSt
    103      * @param deleteBlank 转换后去掉非打印字符
    104      * @return
    105      */
    106     public static String convertToSimplified(String pinYinSt, boolean deleteBlank) {
    107         String tempStr = null;
    108         try {
    109             tempStr = ChineseHelper.convertToSimplifiedChinese(pinYinSt);
    110         } catch (Exception e) {
    111             tempStr = pinYinSt;
    112             e.printStackTrace();
    113         }
    114         if (deleteBlank) {
    115             tempStr = tempStr.replaceAll("\s*", SPACEMARK);
    116         }
    117         return tempStr;
    118     }
    119 
    120     /**
    121      * 转换为不带音调的拼音字符串
    122      * @param pinYinStr 需转换的汉字
    123      * @param deleteBlank 转换后去掉非打印字符
    124      * @param spaceMark 非打印字符
    125      * @return 拼音字符串
    126      */
    127     public static String convertToTonePinYin(String pinYinStr, boolean deleteBlank, String spaceMark) {
    128         String tempStr = null;
    129         try {
    130             if (spaceMark == null) {
    131                 spaceMark = SPACEMARK;
    132             }
    133             tempStr = PinyinHelper.convertToPinyinString(pinYinStr, spaceMark, PinyinFormat.WITHOUT_TONE);
    134         } catch (Exception e) {
    135             tempStr = pinYinStr;
    136             e.printStackTrace();
    137         }
    138         if (deleteBlank) {
    139             tempStr = tempStr.replaceAll("\s*", SPACEMARK);
    140         }
    141         return tempStr;
    142     }
    143 
    144     /**
    145      * 简体转换为繁体
    146      * @param pinYinStr
    147      * @param deleteBlank 转换后去掉非打印字符
    148      * @return
    149      */
    150     public static String convertToTraditional(String pinYinStr, boolean deleteBlank) {
    151         String tempStr = null;
    152         try {
    153             tempStr = ChineseHelper.convertToTraditionalChinese(pinYinStr);
    154         } catch (Exception e) {
    155             tempStr = pinYinStr;
    156             e.printStackTrace();
    157         }
    158         if (deleteBlank) {
    159             tempStr = tempStr.replaceAll("\s*", SPACEMARK);
    160         }
    161         return tempStr;
    162     }
    163 
    164     public static void main(String[] args) {
    165         String str = "重慶 most input 
     a b c#        d";
    166         System.out.println(convertToSimplified(str, true));
    167         System.out.println(checkPinYin('重'));
    168         System.out.println(convertToMarkPinYin(str, true, null));
    169         System.out.println(convertToGetShortPinYin(str, true));
    170         System.out.println(convertToNumberPinYin(str, true, null));
    171         System.out.println(convertToTonePinYin(str, true, null));
    172         System.out.println(convertToTraditional(str, true));
    173     }
    174 }

     依赖:

    1 <dependency>

    2 <groupId>com.github.stuxuhai</groupId>

    3 <artifactId>jpinyin</artifactId>

    4 <version>1.1.8</version>

    5 </dependency> 

  • 相关阅读:
    1062 Talent and Virtue (25 分)
    1083 List Grades (25 分)
    1149 Dangerous Goods Packaging (25 分)
    1121 Damn Single (25 分)
    1120 Friend Numbers (20 分)
    1084 Broken Keyboard (20 分)
    1092 To Buy or Not to Buy (20 分)
    数组与链表
    二叉树
    时间复杂度与空间复杂度
  • 原文地址:https://www.cnblogs.com/wang1001/p/9768251.html
Copyright © 2011-2022 走看看