Java正則表達式實現表字段名和駝峰式命名轉換
在開發過程中,數據表中的字段名我們通常以“_”分隔(如: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 轉換后的駝峰式命名
*/
public 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 轉換后的以"_"分隔的數據表字段名
*/
public static String decamelize(String camelCaseStr){
return isBlank(camelCaseStr) ? camelCaseStr : camelCaseStr.replaceAll("[A-Z]", "_$0").toLowerCase();
}
/**
* 字符串是否為空
* @param cs 待檢查的字符串
* @return 空:true; 非空:false
*/
public static boolean isBlank(final CharSequence cs) {
int strLen;
if (cs == null || (strLen = cs.length()) == 0) {
return true;
}
for (int i = 0; i < strLen; i++) {
if (!Character.isWhitespace(cs.charAt(i))) {
return false;
}
}
return true;
}
}
測試結果: