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 }