REGEX ..将X_FOO_BAR转换为fooBar

时间:2013-06-22 18:59:54

标签: java regex

我正在编写一个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个字符。)

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("_", "");