1

我正在编写一个 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

(注意:数据库列仅包含大写字母,并且可能包含一个或多个下划线字符。前 2 个字符将始终为 X_ 或 Y_。列名称将始终包含至少 3 个字符。)

4

3 回答 3

0

不需要正则表达式。我会让你开始,你可以完成。

String input = Y_SCORE_CARD;
String tokens = input.substring(2).split("_");
String output = // lowercase characters for each token except first and join together
于 2013-06-22T19:09:21.007 回答
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();
}
于 2013-06-22T19:09:32.680 回答
0

使用Apache Commons lang 库中的 WordUtils可以在 1 行中完成:

// assuming str is your String
str = WordUtils.capitalizeFully(str.substring(2), new char[]{'_'}).replace("_", "");
于 2013-06-22T19:26:52.570 回答