| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- package com.ylx.common.utils;
- import com.github.stuxuhai.jpinyin.PinyinException;
- import com.github.stuxuhai.jpinyin.PinyinFormat;
- import com.github.stuxuhai.jpinyin.PinyinHelper;
- import java.text.Collator;
- import java.util.*;
- /**
- * @Description
- * @Author lgx
- * @Time 2023/4/17
- */
- public class CityChineseUtil {
- /**
- * 获取姓名全拼和首字母
- * PinyinFormat:WITH_TONE_MARK(声调模式),WITH_TONE_NUMBER(数字代表声调模式),WITHOUT_TONE(无声调模式)
- * @param chinese 汉语名称
- * @return fullPinyin : 全拼 simplePinyin : 首字母 groupPinyin:微信用户组第一个字母
- * @throws PinyinException
- */
- public static Map<String, String> changeChinesePinyin(String chinese) throws Exception {
- Map<String, String> pinyin = new HashMap<String, String>();
- //将中文转化成拼音(全拼)
- String fullPinyin = PinyinHelper.convertToPinyinString(chinese,"", PinyinFormat.WITHOUT_TONE);
- //将中文转化为简拼模式(各汉字第一个字母组成)
- String simplePinyin = PinyinHelper.getShortPinyin(chinese);
- //首字母
- String firstPinyin = String.valueOf(simplePinyin.charAt(0));
- pinyin.put("fullPinyin", fullPinyin);
- pinyin.put("simplePinyin", simplePinyin.toUpperCase());
- pinyin.put("groupPinyin", firstPinyin.toUpperCase());
- return pinyin;
- }
- /**
- * 按拼音首字母分组
- * @param list
- * @return
- */
- public static Map<String, List<String>> getCodeGroup(List<String> list) throws Exception{
- Comparator<Object> com = Collator.getInstance(Locale.CHINA);
- //按字母排序
- Collections.sort(list, com);
- //输出26个字母
- Map<String, List<String>> map = new TreeMap<String, List<String>>();
- 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);
- }
- }
- map.put(word, letter);
- }
- return map;
- }
- // String str = "长沙市";
- // //设置声调表示格式
- // System.out.println(PinyinHelper.convertToPinyinString(str, ",", PinyinFormat.WITH_TONE_MARK)); // nǐ,hǎo,shì,jiè
- // //数字表示声调
- // System.out.println(PinyinHelper.convertToPinyinString(str, ",", PinyinFormat.WITH_TONE_NUMBER)); // ni3,hao3,shi4,jie4
- // //无声调
- // System.out.println( PinyinHelper.convertToPinyinString(str, ",", PinyinFormat.WITHOUT_TONE)); // ni,hao,shi,jie
- // //获取拼音首字母
- // System.out.println(PinyinHelper.getShortPinyin(str)); // nhsj
- // //判断是否多音字
- // System.out.println(PinyinHelper.hasMultiPinyin('啊'));//true
- }
|