• 获取中文首字母


    一)有一个开源的jar可以使用:pinyin4j,在mvnrepository.com上搜索即可获取pom引用。

    下面是自己写的一个简单实例,因为不解决汉字里的多音字问题,所以这里将一些特殊情况自己判断了。

    private static Map<String,String> special = new HashMap<>();
        static {
            special.put("重庆","C");
        }
    
        /**
         * 提取每个汉字的首字母
         * 多音字不好判断
         * @param str 输入的字符串
         * @return String 输出的
         */
        public static String getPinYinFirstChar(String str) {
            if (!StringUtils.isBlank(str)){
                if (special.containsKey(str)){
                    return special.get(str);
                }
                char[] charArray = str.toCharArray();
                if (charArray.length > 0){
                    String[] pinyinArray = PinyinHelper.convertToPinyinArray(charArray[0]);
                    if (pinyinArray != null) {
                        return String.valueOf(Character.toUpperCase(pinyinArray[0].charAt(0)));
                    } else {
                        return String.valueOf(charArray[0]);
                    }
                }
            }
            return StringUtils.EMPTY;
        }

    2)引申一下

    因为项目里需要根据某列排序,不只是根据首字母,例如 城市拼音分别为 hanzhong,handan,hankou,luoyang排序的话,要严格按照字母序排列:handan,hankou,hanzhong,luoyang。即遇到相等的话继续向后比较。此时根据 PinyinHelper.convertToPinyinArray 获取到全拼音,然后再自己定义一个比较方法:例如 comparator<.char[]>,比较两个字符数组即可。

  • 相关阅读:
    架构设计的方法学 【转】
    异常处理
    Java中---HashSet中的Set()方法不能加重复值的原因,唯一性
    java中Set集合
    java中foreach语法和总结
    泛型的处理
    迭代器错误处理
    防重复提交
    mqtt安装和使用
    字符串正则替换
  • 原文地址:https://www.cnblogs.com/mydesky2012/p/14785331.html
Copyright © 2020-2023  润新知