Mat*_*all 136 java regex string
标题基本概括了所有内容.我能用Java格式"THIS_IS_AN_EXAMPLE_STRING"
转换格式为" ThisIsAnExampleString
" 的字符串的最简单/最优雅的方法是什么?我认为必须至少有一种方法可以使用String.replaceAll()
和正则表达式.
我最初的想法是:在字符串前加下划线(_
),将整个字符串转换为小写,然后使用replaceAll将每个前面带下划线的字符转换为大写字母.
Arn*_*len 176
另一种选择是使用谷歌番石榴 com.google.common.base.CaseFormat
George Hawkins在这个用法示例中留下了评论:
CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, "THIS_IS_AN_EXAMPLE_STRING");
Run Code Online (Sandbox Code Playgroud)
Dan*_*ell 119
看一下Apache Commons lang库中的WordUtils:
具体来说,capitalizeFully(String str,char [] delimiters)方法应该完成这项工作:
String blah = "LORD_OF_THE_RINGS";
assertEquals("LordOfTheRings", WordUtils.capitalizeFully(blah, new char[]{'_'}).replaceAll("_", ""));
Run Code Online (Sandbox Code Playgroud)
绿吧!
C. *_*oss 89
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();
}
Run Code Online (Sandbox Code Playgroud)
注意:您需要添加参数验证.
lib*_*cha 17
使用Apache Commons Lang3 lib非常容易.
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.text.WordUtils;
public String getName(String text) {
return StringUtils.remove(WordUtils.capitalizeFully(text, '_'), "_");
}
Run Code Online (Sandbox Code Playgroud)
例:
getName("SOME_CONSTANT");
Run Code Online (Sandbox Code Playgroud)
得到:
"SomeConstant"
Run Code Online (Sandbox Code Playgroud)
public static void main(String[] args) {
String start = "THIS_IS_A_TEST";
StringBuffer sb = new StringBuffer();
for (String s : start.split("_")) {
sb.append(Character.toUpperCase(s.charAt(0)));
if (s.length() > 1) {
sb.append(s.substring(1, s.length()).toLowerCase());
}
}
System.out.println(sb);
}
Run Code Online (Sandbox Code Playgroud)
以下是可能有用的代码段:
String input = "ABC_DEF";
StringBuilder sb = new StringBuilder();
for( String oneString : input.toLowerCase().split("_") )
{
sb.append( oneString.substring(0,1).toUpperCase() );
sb.append( oneString.substring(1) );
}
// sb now holds your desired String
Run Code Online (Sandbox Code Playgroud)
使用 Streams 的 Java 1.8 示例
String text = "THIS_IS_SOME_TEXT";
String bactrianCamel = Stream.of(text.split("[^a-zA-Z0-9]"))
.map(v -> v.substring(0, 1).toUpperCase() + v.substring(1).toLowerCase())
.collect(Collectors.joining());
String dromedaryCamel = bactrianCamel.toLowerCase().substring(0, 1) + bactrianCamel.substring(1);
System.out.printf("%s is now %s%n", text, dromedaryCamel);
Run Code Online (Sandbox Code Playgroud)
THIS_IS_SOME_TEXT现在是thisIsSomeText
Apache Commons 项目现在有CaseUtils类,它有一个toCamelCase方法,完全按照 OP 的要求执行:
CaseUtils.toCamelCase("THIS_IS_AN_EXAMPLE_STRING", true, '_');
Run Code Online (Sandbox Code Playgroud)