Java-汉字繁体拼音转换

2018-10-11 10:01:16来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

  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 \r\n 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> 

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:增量数据同步中间件DataLink分享(已开源)

下一篇:Java获取http和https网址对应html数据实例