属性名称转换-驼峰命名&下划线

@Test
public void camelcaseTest() {
    String util = ConvertUtil.camelCaseToUnderscore("paramCheckUtil");
    String str = ConvertUtil.underscoreToCamelCase("param_check_util");
    System.out.println(util + ", " + str);
}
public class ConvertUtil {

    private static Pattern camelPattern = Pattern.compile("[A-Z]");
    private static Pattern underscorePattern = Pattern.compile("_(\w)");

    /**
     * 驼峰命名转下划线
     * group(0) 表示匹配的全部字符串,即使正则中没有显示的括号,group(0) 也总是存在的,它相当于整个模式匹配的结果
     * group(1) 表示第一个捕获组
     */
    public static String camelCaseToUnderscore(String name) {
        StringBuffer buffer = new StringBuffer();

        Matcher matcher = camelPattern.matcher(name);
        while (matcher.find()) {
            String str = matcher.group(0).toLowerCase();
            matcher.appendReplacement(buffer, "_" + str);
        }
        matcher.appendTail(buffer);

        return buffer.toString();
    }

    /**
     * 下划线转驼峰
     */
    public static String underscoreToCamelCase(String name) {
        StringBuffer buffer = new StringBuffer();

        Matcher matcher = underscorePattern.matcher(name);
        while (matcher.find()) {
            // int groupCount = matcher.groupCount();
            matcher.appendReplacement(buffer, matcher.group(1).toUpperCase());
        }
        matcher.appendTail(buffer);

        return buffer.toString();
    }

    /**
     * 对象转Map
     */
    public static Map objectToMap(Object object) {
        Map map = new HashMap();

        Field[] declaredFields = object.getClass().getDeclaredFields();
        for (Field field : declaredFields) {
            field.setAccessible(true);

            try {
                Object obj = field.get(object);
                if (Objects.nonNull(obj)) {
                    map.put(field.getName(), obj);
                }
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }

        return map;
    }

    /**
     * 对象属性合并
     */
    public static  void merge(T source, T target) {
        try {
            BeanInfo beanInfo = Introspector.getBeanInfo(target.getClass());
            for (PropertyDescriptor descriptor : beanInfo.getPropertyDescriptors()) {
                // 属性是否有对应的 Setter 方法
                if (descriptor.getWriteMethod() == null) {
                    continue;
                }

                Object value = descriptor.getReadMethod().invoke(source);
                if (value != null) {
                    descriptor.getWriteMethod().invoke(target, value);
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

【信息由网络或者个人提供,如有涉及版权请联系COOY资源网邮箱处理】

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容