• 使用PinYin4J汉字转拼音


      1 import net.sourceforge.pinyin4j.PinyinHelper;
      2 import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
      3 import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
      4 import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
      5 import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
      6 
      7 /**
      8  * 汉字转拼音,英文字符不变
      9  * @version 1.0
     10  * 
     11  */
     12 public class PinYinToolkit {
     13     
     14     /**
     15      * 汉字转换汉语拼音首字母,英文字符不变
     16      * 例如:北京--> bj
     17      * @param chinese 汉字
     18      * @return String
     19      */
     20     public static String cn2FirstSpell(String chinese){
     21         StringBuilder pinyin = new StringBuilder();
     22         char[] nameChar = chinese.toCharArray();
     23         HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
     24         defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
     25         defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
     26         for(int i = 0; i < nameChar.length;i++){
     27             if(nameChar[i] > 128){
     28                 try {
     29                     String[] py = PinyinHelper.toHanyuPinyinStringArray(nameChar[i],defaultFormat);
     30                     if(py != null){
     31                         pinyin.append(py[0].charAt(0));
     32                     }
     33                 } catch (BadHanyuPinyinOutputFormatCombination e) {
     34                     e.printStackTrace();
     35                 }
     36             } else {
     37                 pinyin.append(nameChar[i]);
     38             }
     39         }
     40         return pinyin.toString();
     41     }
     42     
     43     /**
     44      * 汉字转换汉语拼音,英文字符不变
     45      * 例如:北京--> beijing
     46      * @param chinese 汉字
     47      * @return String
     48      */
     49     public static String cn2Spell(String chinese){
     50         StringBuilder pinyin = new StringBuilder();
     51         char[] nameChar = chinese.toCharArray();
     52         HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
     53         defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
     54         defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
     55         for(int i = 0; i < nameChar.length;i++){
     56             if(nameChar[i] > 128){
     57                 try {
     58                     String[] py = PinyinHelper.toHanyuPinyinStringArray(nameChar[i],defaultFormat);
     59                     if(py != null){
     60                         pinyin.append(py[0]);
     61                     }
     62                 } catch (BadHanyuPinyinOutputFormatCombination e) {
     63                     e.printStackTrace();
     64                 }
     65             } else {
     66                 pinyin.append(nameChar[i]);
     67             }
     68         }
     69         return pinyin.toString();
     70     }
     71     
     72     /**
     73      * 拼音转换汉语拼音,拼音首字母大写,英文字符不变
     74      * 例如:北京--> BeiJing
     75      * @param chinese 汉字
     76      * @return String
     77      */
     78     public static String cn2SpellFirstUpperCase(String chinese){
     79         StringBuilder pinyin = new StringBuilder();
     80         char[] nameChar = chinese.toCharArray();
     81         HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
     82         defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
     83         defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
     84         for(int i = 0; i < nameChar.length;i++){
     85             if(nameChar[i] > 128){
     86                 try {
     87                     String[] py = PinyinHelper.toHanyuPinyinStringArray(nameChar[i],defaultFormat);
     88                     if(py != null){                
     89                         pinyin.append(py[0].substring(0, 1).toUpperCase() + py[0].substring(1));
     90                     }
     91                 } catch (BadHanyuPinyinOutputFormatCombination e) {
     92                     e.printStackTrace();
     93                 }
     94             } else {
     95                 pinyin.append(nameChar[i]);
     96             }
     97         }
     98         return pinyin.toString();
     99     }
    100 }
  • 相关阅读:
    BZOJ4552 Tjoi2016&Heoi2016排序 【二分+线段树】*
    BZOJ4547 Hdu5171 小奇的集合 【矩阵快速幂优化递推】
    BZOJ1113 Poi2008 海报PLA【单调栈】【水】
    BZOJ1510 POI2006 Kra-The Disks 【模拟】
    BZOJ 2530 Poi2011 Party 【枚举】
    BZOJ4292 PA2015 Równanie 【暴力水题】
    BZOJ1801 Ahoi2009 chess 中国象棋 【DP+组合计数】*
    【干货】高精度模板【加,减,乘,快速幂】
    BZOJ1220 HNOI2002 跳蚤 【容斥原理+高精度】*
    BZOJ1412 ZJOI2009 狼和羊的故事 【网络流-最小割】
  • 原文地址:https://www.cnblogs.com/dongliyang/p/2880683.html
Copyright © 2020-2023  润新知