@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
暂无评论内容