111
k94314517
2024-03-14 cb96c5493ebbb0767cf4d5b83544e131294225cb
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
package com.doumee.core.utils;
 
 
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.exception.BadHanyuPinyinOutputFormatCombination;
import org.apache.commons.lang3.StringUtils;
 
/**
 * 汉语拼音帮助类
 * 
 * @author yanglong
 * 
 */
public class PinYinUtil {
 
    /**
     * 比较两个汉字的首字母 <br>
     * 
     * @param ch1
     * @param ch2
     * @return
     */
    public static int comparatorWord(String ch1, String ch2) {
        return getFirstSpell(ch2).compareTo(getFirstSpell(ch1));
    }
 
    public static void main(String[] args) {
        String[] t = new String[]{
                "QC/QD06林内水伺服16",
                "QS04林内白色13",
        "QC05林内13",
        "QS04林内白色16",
                "QC06(C08)林内水伺服13",
                "GD32林内16",
                "QC05林内16",
                "GD61R林内零冷水16",
                "QS41/QD31林内16",
                "QS41/QD31林内13",
                "E32(R32F)林内白色零冷水16",
                "E32(R32F)林内白色零冷水20",
                "E32(R32F)林内白色零冷水24",
                "GD32林内13",
                "QD32林内13",
                "QD32林内16",
                "QD33W林内16",
                "QD33W林内13",
                "E66林内水伺服13",
                "E86林内零冷水水伺服16",
                "E86林内零冷水水伺服20",
                "E86林内零冷水水伺服24",
                "X氧林内白零冷水水伺服16",
                "QS01林内白11",
                "GD31林内白13",
                "GD31林内白16",
                "GD32林内13",
                "GD32林内16",
                "QC05+SG林内零冷水",
                "D03林内经典13",
                "D03林内经典16",
                "D66W林内",
                "M16(M73)林内白水伺:服",
                "C01(QD01)林内白"
 
        };
        System.err.println(t.length);
        for(String s : t){
            System.err.println("==============="+s);
            System.err.println(getFullSpell(s));
        }
 
 
    }
    /**
     * 获取汉字串拼音首字母,英文字符不变
     * 
     * @param chinese
     *            汉字串
     * @return 汉语拼音首字母
     */
    public static String getFirstSpell(String chinese) {
        try {
            StringBuffer pybf = new StringBuffer();
            char[] arr = chinese.toCharArray();
            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
            defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
            for (int i = 0; i < arr.length; i++) {
                if (arr[i] > 128) {
                    try {
                        String[] temp = PinyinHelper.toHanyuPinyinStringArray(
                                arr[i], defaultFormat);
                        if (temp != null) {
                            pybf.append(temp[0].charAt(0));
                        }
                    } catch (BadHanyuPinyinOutputFormatCombination e) {
                        e.printStackTrace();
                    }catch (Exception e){
                        //e.printStackTrace();
                    }
                } else {
                    pybf.append(arr[i]);
                }
            }
            return pybf.toString().replaceAll("\\W", "").trim();
 
        }catch (Exception e){
 
        }
        return  null;
    }
    /**
     * 获取汉字串拼音首字母,英文字符不变
     * 
     * @param chinese
     *            汉字串
     * @return 汉语拼音首字母
     */
    public static String getFirstFirstSpell(String chinese) {
        if(StringUtils.isBlank(chinese)){
            return null;
        }
        StringBuffer pybf = new StringBuffer();
        chinese = chinese.substring(0,1);
        char[] arr = chinese.toCharArray();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] > 128) {
                try {
                    String[] temp = PinyinHelper.toHanyuPinyinStringArray(
                            arr[i], defaultFormat);
                    if (temp != null) {
                        pybf.append(temp[0].charAt(0));
                    }
                } catch (BadHanyuPinyinOutputFormatCombination e) {
                    e.printStackTrace();
                }catch (Exception e){
                    //e.printStackTrace();
                }
            } else {
                pybf.append(arr[i]);
            }
        }
        return pybf.toString().replaceAll("\\W", "").trim().toUpperCase();
    }
 
    /**
     * 获取汉字串拼音,英文字符不变
     * 
     * @param chinese
     *            汉字串
     * @return 汉语拼音
     */
    public static String getFullSpell(String chinese) {
        try {
            StringBuffer pybf = new StringBuffer();
            char[] arr = chinese.toCharArray();
            HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
            defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
            defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
            for (int i = 0; i < arr.length; i++) {
                if (arr[i] > 128) {
                    try {
                        pybf.append(PinyinHelper.toHanyuPinyinStringArray(arr[i],
                                defaultFormat)[0]);
                    } catch (BadHanyuPinyinOutputFormatCombination e) {
                        //e.printStackTrace();
                    }catch (Exception e){
                        //e.printStackTrace();
                    }
                } else {
                    pybf.append(arr[i]);
                }
            }
            return pybf.toString();
        }catch (Exception e){
 
        }
        return  null;
    }
}