将Java字符串从所有大写字母(由下划线分隔的单词)转换为CamelCase(没有单词分隔符)的最简单方法是什么?

问题

标题基本概括了所有内容。我可以用Java格式将格式为"THIS_IS_AN_EXAMPLE_STRING"的字符串转换为格式为"ThisIsAnExampleString"的最简单/最优雅的方法是什么?我认为至少有一种方法可以使用2669642787和正则表达式来完成它。

我最初的想法是:在字符串前加下划线(_),将整个字符串转换为小写,然后使用replaceAll将每个前面带下划线的字符转换为大写字母。


#1 热门回答(134 赞)

另一个选择是使用Google Guava的com.google.common.base.CaseFormat

George Hawkins在这个使用示例下发表评论:

CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, "THIS_IS_AN_EXAMPLE_STRING");

#2 热门回答(105 赞)

看看WordUtils in the Apache Commons langlibrary:

具体来说,capitalizeFully(String str,char [] delimiters)方法应该完成这项工作:

String blah = "LORD_OF_THE_RINGS";
assertEquals("LordOfTheRings", WordUtils.capitalizeFully(blah, new char[]{'_'}).replaceAll("_", ""));

绿吧!


#3 热门回答(73 赞)

static String toCamelCase(String s){
   String[] parts = s.split("_");
   String camelCaseString = "";
   for (String part : parts){
      camelCaseString = camelCaseString + toProperCase(part);
   }
   return camelCaseString;
}

static String toProperCase(String s) {
    return s.substring(0, 1).toUpperCase() +
               s.substring(1).toLowerCase();
}

注意:你需要添加参数验证。