我正在编写一个java DAO类,它将读取表的元数据并转换列名。我根据以下规则在转换REGEX时遇到问题。
- remove first 2 characters
- convert all letters to lowercase with the exception of the first character after the underscore (_) symbol
- remove underscore
所以...
X_H -> h
X_THE_FIND -> theFind
Y_SCORE_CARD -> scoreCard
Y_PARTNER -> partner
(注意:数据库列只包含大写字母,可能包含一个或多个下划线字符。前两个字符将始终为X_或Y_。列名称将始终至少包含3个字符。)
答案 0 :(得分:0)
不需要正则表达式。我会让你开始,你可以完成。
String input = Y_SCORE_CARD;
String tokens = input.substring(2).split("_");
String output = // lowercase characters for each token except first and join together
答案 1 :(得分:0)
我不是正则表达式向导,但在我看来,如果没有任何正则表达式,这将更简单。试试这样的事情:
public static String convert(String s) {
String[] parts = s.toLowerCase().split("_");
StringBuilder builder = new StringBuilder(s[1]);
for (int i = 2; i < parts.length; i++) {
builder.append(Character.toUpperCase(s[i].charAt(0)));
builder.append(s[i].substring(1));
}
return builder.toString();
}
答案 2 :(得分:0)
使用WordUtils in the Apache Commons lang library可以在一行中完成:
// assuming str is your String
str = WordUtils.capitalizeFully(str.substring(2), new char[]{'_'}).replace("_", "");