hjl
2024-07-16 ec6d43aa07ee0e8faf34498057ebcfbb446aa015
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
/*
package com.ruoyi.user.utils;
 
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
import com.ruoyi.user.entity.Region;
import ev.viewworld.model.sysuser;
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;
public class changeChinesePinyinUtil {
    */
/**
     * 获取姓名全拼和首字母
     * @author 于公成
     * @param  chinese 汉语名称
     * @return fullPinyin : 全拼        simplePinyin : 首字母  groupPinyin:微信用户组第一个字母
     * @throws BadHanyuPinyinOutputFormatCombination
     *//*
 
    public static Map<String, String> changeChinesePinyin(String chinese) throws BadHanyuPinyinOutputFormatCombination { 
            Map<String, String> pinyin = new HashMap<String, String>(); 
    
            HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); 
            format.setCaseType(HanyuPinyinCaseType.LOWERCASE); 
            format.setToneType(HanyuPinyinToneType.WITHOUT_TONE); 
            format.setVCharType(HanyuPinyinVCharType.WITH_V); 
    
            StringBuffer fullPinyin = new StringBuffer(); 
            StringBuffer simplePinyin = new StringBuffer(); 
            StringBuffer firstPinyin = new StringBuffer(); 
 
            char[] chineseChar = chinese.toCharArray(); 
            for (int i = 0; i < chineseChar.length; i++) { 
                    String[] str = null;  
                try { 
                    str = PinyinHelper.toHanyuPinyinStringArray(chineseChar[i], 
                    format); 
                } catch (BadHanyuPinyinOutputFormatCombination e) { 
                    e.printStackTrace();
                } 
                if (str != null) { 
                    fullPinyin = fullPinyin.append(str[0].toString()); 
                    simplePinyin = simplePinyin.append(str[0].charAt(0)); 
                
                } 
                    if (str == null) { 
                    String regex = "^[0-9]*[a-zA-Z]*+$"; 
                    Pattern pattern = Pattern.compile(regex); 
                    Matcher m = pattern.matcher(String.valueOf(chineseChar[i])); 
                        if (m.find()) { 
                            fullPinyin = fullPinyin.append(chineseChar[i]); 
                            simplePinyin = simplePinyin.append(chineseChar[i]); 
                        } 
                    } 
            } 
            String[] name = PinyinHelper.toHanyuPinyinStringArray(chineseChar[0],format); 
            firstPinyin=firstPinyin.append(name[0].charAt(0));            
            pinyin.put("fullPinyin", fullPinyin.toString()); 
            pinyin.put("simplePinyin", simplePinyin.toString().toUpperCase()); 
            pinyin.put("groupPinyin", firstPinyin.toString().toUpperCase());
            return pinyin; 
            } 
    */
/**
     * 按拼音首字母分组
     * @author 于公成
     * @param list
     * @return
     * @throws BadHanyuPinyinOutputFormatCombination
     *//*
 
    public static Map<String, Object> getCodeGroup(List<String> list) throws BadHanyuPinyinOutputFormatCombination {
        Comparator<Object> com = Collator.getInstance(java.util.Locale.CHINA);
        //按字母排序
        Collections.sort(list, com);
        //输出26个字母
        Map<String, Object> map = new TreeMap<String, Object>();
        for(int i=1;i<=26;i++){
        String word = String. valueOf((char) (96 + i)). toUpperCase();
        //循环找出首字母一样的数据
        List<String> letter = new ArrayList<String>();
        for (String str : list) {
            String code=changeChinesePinyin(str).get("groupPinyin");
            if(word.equals(code)) {
                letter.add(str);
            }
            System.out.println(str);
        }
        map.put(word, letter);
        }
        System.out.println(map);
        return map;
    }
        
    */
/**
     * @author 于公成
     * 按用户拼音首字母分组
     * @param list
     * @return
     * @throws BadHanyuPinyinOutputFormatCombination
     *//*
 
    public static Map<String, List<Region>> getUserCodeGroup(List<Region> list) throws BadHanyuPinyinOutputFormatCombination {
        //Collections工具类的sort()方法对list集合元素排序 
        Collections.sort(list,new Comparator<Region>(){
            @Override
            public int compare(sysuser o1, sysuser o2) {
                //获取中文环境
                Comparator<Object> com = Collator.getInstance(java.util.Locale.CHINA);
                return com.compare(o1.getRealname(),o2.getRealname());
            }
        });
        
        //输出26个字母
        Map<String, List<sysuser>> map = new TreeMap<String, List<sysuser>>();
        for(int i=1;i<=26;i++){
        String word = String. valueOf((char) (96 + i)). toUpperCase();
        //循环找出首字母一样的数据
        List<sysuser> letter = new ArrayList<sysuser>();
        for (sysuser str : list) {
            
            String code=changeChinesePinyin(str.getRealname()).get("groupPinyin");
            if(word.equals(code)) {
                letter.add(str);
            }
            System.out.println(str);
        }
        map.put(word, letter);
        }
        System.out.println(map);
        return map;
    }
        
    
    public static void main(String[] args) throws BadHanyuPinyinOutputFormatCombination {
//        System.out.println(changeChinesePinyin("于公成").get("groupPinyin"));
        List<String> list=new ArrayList<String>();
        list.add("于公成");
        list.add("由于工程");
        list.add("与工程");
        list.add("王为");
        list.add("刘汝祥");
        list.add("阿宝");
        list.add("阿亮");
        getCodeGroup(list);
    }
}*/