从snake_case到Java中的camelCase

时间:2015-12-11 17:13:31

标签: java string

任何人都可以告诉我如何将snake_case中的字符串转换为:

camel_case

到camelCase中的字符串:

camelCase
在Java中

提前谢谢。

7 个答案:

答案 0 :(得分:4)

这可能很漂亮,而且很有效 公共课测试{

public static void main(String[] args) {
    String phrase = "always_use_camel_back_notation_in_java";
    while(phrase.contains("_")) {
            phrase = phrase.replaceFirst("_[a-z]", String.valueOf(Character.toUpperCase(phrase.charAt(phrase.indexOf("_") + 1))));
        }
        System.out.println(phrase);
    }
}

答案 1 :(得分:3)

查看o string课程的oracle文档,特别是substringcharAtindexOftoUpperCase

(您可以将这些作为拼图来解决您的问题)

答案 2 :(得分:3)

您可以使用toCamelCase util:

argv[1]

来自Apache Commons Text

答案 3 :(得分:1)

这并不漂亮,但它确实有效:

<div ng-app="MyApp" ng-controller="myController">

  <div ng-repeat="button1 in buttons">
    <button ng-click="toggleDetail($index)">
      {{button1.label}}    
    </button>
   </div>
</div>

答案 4 :(得分:1)

使用split("_")并循环遍历这些部分是一种方法。

以下是使用StringBuilder的替代方法。

String s = "make_me_camel_case";
StringBuilder sb = new StringBuilder(s);

for (int i = 0; i < sb.length(); i++) {
    if (sb.charAt(i) == '_') {
        sb.deleteCharAt(i);
        sb.replace(i, i+1, String.valueOf(Character.toUpperCase(sb.charAt(i))));
    }
}

System.out.println(sb.toString()); // makeMeCamelCase

答案 5 :(得分:1)

Java SE 8+

使用 Java-8 Stream API,我们可以在一条语句中完成。

import java.util.Arrays;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        String str = "snake_case_to_camel_case";

        str = str.indexOf("_") != -1
                ? str.substring(0, str.indexOf("_")) + 
                    Arrays.stream(str.substring(str.indexOf("_") + 1).split("_"))
                        .map(s -> Character.toUpperCase(s.charAt(0)) + s.substring(1)).collect(Collectors.joining())
                : str;

        System.out.println(str);
    }
}

输出:

snakeCaseToCamelCase

ONLINE DEMO

Java SE 9+

Matcher#replaceAll​(Function<MatchResult, String> replacer) 随 Java SE 9 一起引入,使其更加简单。

import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        String str = "snake_case_to_camel_case";

        str = Pattern.compile("_([a-z])")
                    .matcher(str)
                    .replaceAll(m -> m.group(1).toUpperCase());

        System.out.println(str);
    }
}

输出:

snakeCaseToCamelCase

ONLINE DEMO

答案 6 :(得分:0)

Guava的CaseFormat还提供了一种非常简洁的解决方案,可让您在骆驼式的案例甚至其他特定案例之间进行转换。

CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, "camel_case"); // returns camelCase
CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, "CAMEL_CASE"); // returns CamelCase
CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, "camelCase"); // returns CAMEL_CASE
CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_HYPHEN, "CamelCase"); // returns camel-case