本意是想将PROJECT_NAME等数据库列名转换成VO对应的属性名:projectName
String str2 = "PROJECT_NAME";
Pattern pattern = Pattern.compile("_.");
String strTemp = str2.toLowerCase();
Matcher matcher = pattern.matcher(strTemp);
System.out.println(matcher.replaceAll(pattern.pattern()));
protected String changeName(String sourceName, boolean upDown) {
if (upDown) {
if (upDownPattern == null) {
upDownPattern = Pattern.compile("[A-Z]{1}");
}
String strTemp = sourceName;
Matcher matcher = upDownPattern.matcher(strTemp);
while (matcher.find()) {
// strTemp = matcher.replaceFirst("_" + matcher.group());
// matcher.reset();
strTemp = strTemp.replaceFirst(upDownPattern.pattern(), "_" + matcher.group());
}
return strTemp.toUpperCase();
} else {
if (downUpPattern == null) {
downUpPattern = Pattern.compile("_[a-z]{1}");
}
String strTemp = sourceName.toLowerCase();
Matcher matcher = downUpPattern.matcher(strTemp);
while (matcher.find()) {
strTemp = strTemp.replaceFirst(downUpPattern.pattern(), matcher.group().substring(1).toUpperCase());
}
return strTemp;
}
}
public class NameUtils {private NameUtils() { } /** * 名字转换:数据库列名和VO属性名之间的转换 * * @param sourceName * @param upDown true 表示转换成数据库列名 * @return */ public static String changeName(String sourceName, boolean upDown) { if (upDown) { StringBuffer sbTemp = new StringBuffer(32); for (int i = 0, size = sourceName.length(); i < size; i++) { char c = sourceName.charAt(i); if (Character.isUpperCase(c)) { sbTemp.append("_").append(c); } else { sbTemp.append(c); } } return sbTemp.toString().toUpperCase(); } else { String strTemp = sourceName.toLowerCase(); String[] arTemp = strTemp.split("_"); StringBuffer sbTemp = new StringBuffer(32); sbTemp.append(arTemp[0]); for (int i = 1; i < arTemp.length; i++) { sbTemp.append(arTemp[i].substring(0, 1).toUpperCase()).append(arTemp[i].substring(1)); } return sbTemp.toString(); } }
}
这样也很简单。。为什么不自己思考一下。。只要分割处理时候加一个步骤
[code="java"] String str2 = "PROJECT_NAME";
String [] s = str2.toLowerCase().split("_"); //分割一下
str2 += s[0];
for(int i=1;i<s.length;i++){
s[i] = s[i].subString(0,1).toUpperCase( ) +s[i].subString(1);
str2 += s[i];
}
[/code]
用apache regexp吧..
RE r = new RE("(a*)b"); // Compile expression
boolean matched = r.match("xaaaab"); // Match against "xaaaab"
String wholeExpr = r.getParen(0); // wholeExpr will be 'aaaab'
String insideParens = r.getParen(1); // insideParens will be 'aaaa'
有很多种方式 我直接写好一个你拿去用就行了
[code="java"]
String str2 = "PROJECT_NAME";
// \是转义字符 后面写你想截取的字符
String[] arr str2.toLowerCase().split("\-.");
System.out.println("result: "+arr[0]+arr[1]);
[/code]
[code="java"]// \是转义字符 后面写你想截取的字符
String[] arr = str2.toLowerCase().split("\-."); [/code]
少了个赋值符 不好意思
汗。。这样简单的字符串操作不需要正则表达式吧。。
直接
[code="java"]
String str2 = "PROJECT_NAME";
String [] s = str2.toLowerCase().split("_"); //分割一下
str2 = s[0] + s[1].subString(0,1).toUpperCase( ) +s[1].subString(1);
[/code]