1
13693261870
2022-09-16 21ddee1a38257297288b88bc6c0476ec96a5f867
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package com.terra.proxymanager.util;
 
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
 
/**
 * @author lanbase
 * @Description: TODO(中文转拼音工具)
 * @date 2017-9-26 10:09
 */
public class PinyinUtils {
 
    /**
     * 将文字转为汉语拼音
     * @param ChineseLanguage 要转成拼音的中文
     */
    private static String toHanyuPinyin(String ChineseLanguage, HanyuPinyinCaseType caseType){
        char[] cl_chars = ChineseLanguage.trim().toCharArray();
        String hanyupinyin = "";
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(caseType);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调
        defaultFormat.setVCharType(HanyuPinyinVCharType.WITH_V) ;
        try {
            for (int i=0; i<cl_chars.length; i++){
                if (String.valueOf(cl_chars[i]).matches("[\u4e00-\u9fa5]+")){// 如果字符是中文,则将中文转为汉语拼音
                    hanyupinyin += PinyinHelper.toHanyuPinyinStringArray(cl_chars[i], defaultFormat)[0];
                } else {// 如果字符不是中文,则不转换
                    hanyupinyin += cl_chars[i];
                }
            }
        } catch (BadHanyuPinyinOutputFormatCombination e) {
            e.printStackTrace();
        }
        return hanyupinyin;
    }
 
    /**
     * 将文字转为大写汉语拼音
     * @param ChineseLanguage 要转成拼音的中文
     * @return
     */
    public static String toHanyuPinyinUpperCase(String ChineseLanguage){
        return toHanyuPinyin(ChineseLanguage, HanyuPinyinCaseType.UPPERCASE);
    }
 
    /**
     * 将文字转为小写汉语拼音
     * @param ChineseLanguage 要转成拼音的中文
     * @return
     */
    public static String toHanyuPinyinLowerCase(String ChineseLanguage){
        return toHanyuPinyin(ChineseLanguage, HanyuPinyinCaseType.LOWERCASE);
    }
 
    /**
     * 取第一个汉字的第一个字符
     * @param ChineseLanguage 要转成拼音的中文
     * @param caseType 大写还是小写
     * @return
     */
    private static String getFirstLetter(String ChineseLanguage, HanyuPinyinCaseType caseType){
        char[] cl_chars = ChineseLanguage.trim().toCharArray();
        String hanyupinyin = "";
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(caseType);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);// 不带声调
        try {
            String str = String.valueOf(cl_chars[0]);
            if (str.matches("[\u4e00-\u9fa5]+")) {// 如果字符是中文,则将中文转为汉语拼音,并取第一个字母
                hanyupinyin = PinyinHelper.toHanyuPinyinStringArray(cl_chars[0], defaultFormat)[0].substring(0, 1);
            } else {// 如果字符不是中文,则不转换
                hanyupinyin += cl_chars[0];
            }
        } catch (BadHanyuPinyinOutputFormatCombination e) {
            e.printStackTrace();
        }
        return hanyupinyin;
    }
 
    /**
     * 取第一个汉字的第一个大写字符
     * @param ChineseLanguage 要转成拼音的中文
     * @return
     */
    public static String getFirstLetterUpperCase(String ChineseLanguage){
        return getFirstLetter(ChineseLanguage, HanyuPinyinCaseType.UPPERCASE);
    }
 
    /**
     * 取第一个汉字的第一个小写字符
     * @param ChineseLanguage 要转成拼音的中文
     * @return
     */
    public static String getFirstLetterLowerCase(String ChineseLanguage){
        return getFirstLetter(ChineseLanguage, HanyuPinyinCaseType.LOWERCASE);
    }
 
}