获取中文汉字字符串相应的拼音和首字母的大小写

时间:2022-08-22 08:05:29

获取中文汉字字符串相应的拼音和首字母的大小写

一、内容

  使用 pinyin4j 技术,获取一个字符串相应的拼音和首字符的大小写。

  需要 pinyin4j 的组建包,官网下载地址:http://pinyin4j.sourceforge.net/

  官方文档:http://pinyin4j.sourceforge.net/pinyin4j-doc/

二、源代码

  1 package cn.com.zfc.day014;
  2 
  3 import net.sourceforge.pinyin4j.PinyinHelper;
  4 import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
  5 import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
  6 import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
  7 import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
  8 
  9 /**
 10  * 
 11  * @describe 中文转化成拼音工具类
 12  * @author zfc
 13  * @date 2017年12月19日 上午11:32:59
 14  */
 15 public class ChineseToPinYinUtil {
 16 
 17     public static void main(String[] args) {
 18         // 中文字符串首字母大写
 19         System.out.println("张富昌(中文字符串首字母大写):" + toFirstCharUpCase("张富昌"));
 20         // 中文字符串首字母小写
 21         System.out.println("张富昌(中文字符串首字母小写):" + toFirstCharLowCase("张富昌"));
 22         // 中文字符串拼音大写
 23         System.out.println("张富昌(中文字符串拼音大写):" + toPinyinUpCase("张富昌"));
 24         // 中文字符串拼音小写
 25         System.out.println("张富昌(中文字符串拼音小写):" + toPinyinLowCase("张富昌"));
 26     }
 27 
 28     /**
 29      * 获取中文字符串相应的拼音首字母小写
 30      * 
 31      * @param chinese
 32      * @return
 33      * @author zfc
 34      *
 35      */
 36     public static String toFirstCharLowCase(String chinese) {
 37         if (null == chinese) {
 38             return null;
 39         }
 40         String pinyinStr = "";
 41         // 将字符串转为字符数组
 42         char[] newChar = chinese.toCharArray();
 43         HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
 44         // 设置小写
 45         defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
 46         defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
 47         for (int i = 0; i < newChar.length; i++) {
 48             if (newChar[i] > 128) {
 49                 try {
 50                     pinyinStr += PinyinHelper.toHanyuPinyinStringArray(newChar[i], defaultFormat)[0].charAt(0);
 51                 } catch (BadHanyuPinyinOutputFormatCombination e) {
 52                     e.printStackTrace();
 53                 }
 54             } else {
 55                 pinyinStr += newChar[i];
 56             }
 57         }
 58         return pinyinStr;
 59     }
 60 
 61     /**
 62      * 获取中文字符串相应的拼音首字母大写
 63      * 
 64      * @param chinese
 65      * @return
 66      * @author zfc
 67      *
 68      */
 69     public static String toFirstCharUpCase(String chinese) {
 70         if (null == chinese) {
 71             return null;
 72         }
 73         String pinyinStr = "";
 74         // 将字符串转为字符数组
 75         char[] newChar = chinese.toCharArray();
 76         HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
 77         // 设置大写
 78         defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
 79         defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
 80         for (int i = 0; i < newChar.length; i++) {
 81             if (newChar[i] > 128) {
 82                 try {
 83                     pinyinStr += PinyinHelper.toHanyuPinyinStringArray(newChar[i], defaultFormat)[0].charAt(0);
 84                 } catch (BadHanyuPinyinOutputFormatCombination e) {
 85                     e.printStackTrace();
 86                 }
 87             } else {
 88                 pinyinStr += newChar[i];
 89             }
 90         }
 91         return pinyinStr;
 92     }
 93 
 94     /**
 95      * 将中文字符串转换成拼音小写
 96      * 
 97      * @param chinese
 98      * @return
 99      * @author zfc
100      *
101      */
102     public static String toPinyinLowCase(String chinese) {
103         if (null == chinese) {
104             return null;
105         }
106         String pinyinStr = "";
107         // 将字符串转为字符数组
108         char[] newChar = chinese.toCharArray();
109         HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
110         // 设置小写
111         defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
112         defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
113         for (int i = 0; i < newChar.length; i++) {
114             if (newChar[i] > 128) {
115                 try {
116                     pinyinStr += PinyinHelper.toHanyuPinyinStringArray(newChar[i], defaultFormat)[0];
117                 } catch (BadHanyuPinyinOutputFormatCombination e) {
118                     e.printStackTrace();
119                 }
120             } else {
121                 pinyinStr += newChar[i];
122             }
123         }
124         return pinyinStr;
125     }
126 
127     /**
128      * 将中文字符串转换成拼音大写
129      * 
130      * @param chinese
131      * @return
132      * @author zfc
133      *
134      */
135     public static String toPinyinUpCase(String chinese) {
136         if (null == chinese) {
137             return null;
138         }
139         String pinyinStr = "";
140         // 将字符串转为字符数组
141         char[] newChar = chinese.toCharArray();
142         HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
143         // 设置大写
144         defaultFormat.setCaseType(HanyuPinyinCaseType.UPPERCASE);
145         defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
146         for (int i = 0; i < newChar.length; i++) {
147             if (newChar[i] > 128) {
148                 try {
149                     pinyinStr += PinyinHelper.toHanyuPinyinStringArray(newChar[i], defaultFormat)[0];
150                 } catch (BadHanyuPinyinOutputFormatCombination e) {
151                     e.printStackTrace();
152                 }
153             } else {
154                 pinyinStr += newChar[i];
155             }
156         }
157         return pinyinStr;
158     }
159 }

三、运行结果

获取中文汉字字符串相应的拼音和首字母的大小写