在开发过程中,数据表中的字段名我们通常以“_”分隔(如:user_name),而在Java的实体类中我们的字段属性通常采用驼峰式命名。这样我们就避免不了对两种格式的字段名称做转换。以下是通过正则表达式实现的两种格式的相互转换,直接上代码:
package com.tonly.test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CamelCaseTest {
public static void main(String[] args) {
System.out.println(camelize("user_name_type"));
System.out.println(decamelize("userNameType"));
}
/**
* 数据表字段名转换为驼峰式名字的实体类属性名
* @param tabAttr 数据表字段名
* @return 转换后的驼峰式命名
*/
private static String camelize(String tabAttr){
if(isBlank(tabAttr))
return tabAttr;
Pattern pattern = Pattern.compile("(.*)_(\\w)(.*)");
Matcher matcher = pattern.matcher(tabAttr);
if(matcher.find()){
return camelize(matcher.group(1) + matcher.group(2).toUpperCase() + matcher.group(3));
}else{
return tabAttr;
}
}
/**
* 驼峰式的实体类属性名转换为数据表字段名
* @param camelCaseStr 驼峰式的实体类属性名
* @return 转换后的以"_"分隔的数据表字段名
*/
private static String decamelize(String camelCaseStr){
return isBlank(camelCaseStr) ? camelCaseStr : camelCaseStr.replaceAll("[A-Z]", "_$0").toLowerCase();
}
/**
* 字符串是否为空
* @param str 待检查的字符串
* @return 空:true; 非空:false
*/
private static boolean isBlank(String str){
return str == null || "".equals(str);
}
}
测试结果:
原文:https://www.cnblogs.com/tonly85/p/14081956.html