使用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 }
原文地址:https://www.cnblogs.com/dongliyang/p/2880683.html