谁能告诉我如何将snake_case中的字符串转换为:
camel_case
Run Code Online (Sandbox Code Playgroud)
到camelCase中的字符串为:
camelCase
Run Code Online (Sandbox Code Playgroud)
在Java中?
先感谢您。
Ale*_*lex 11
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
Run Code Online (Sandbox Code Playgroud)
您可以使用工具toCamelCase:
CaseUtils.toCamelCase("camel_case", false, new char[]{'_'}); // returns "camelCase"
Run Code Online (Sandbox Code Playgroud)
使用Java-8 Stream API,我们可以在一条语句中完成它。
\nimport java.util.Arrays;\nimport java.util.stream.Collectors;\n\npublic class Main {\n public static void main(String[] args) {\n String str = "snake_case_to_camel_case";\n\n str = str.indexOf("_") != -1\n ? str.substring(0, str.indexOf("_")) + \n Arrays.stream(str.substring(str.indexOf("_") + 1).split("_"))\n .map(s -> Character.toUpperCase(s.charAt(0)) + s.substring(1)).collect(Collectors.joining())\n : str;\n\n System.out.println(str);\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n输出:
\nsnakeCaseToCamelCase\nRun Code Online (Sandbox Code Playgroud)\n\nMatcher#replaceAll\xe2\x80\x8b(Function<MatchResult, String> replacer)随着 Java SE 9 的引入,它变得更加容易。
import java.util.regex.Pattern;\n\npublic class Main {\n public static void main(String[] args) {\n String str = "snake_case_to_camel_case";\n\n str = Pattern.compile("_([a-z])")\n .matcher(str)\n .replaceAll(m -> m.group(1).toUpperCase());\n\n System.out.println(str);\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n输出:
\nsnakeCaseToCamelCase\nRun Code Online (Sandbox Code Playgroud)\n\n
小智 6
这并不漂亮,但它有效:
String phrase = "camel_case";
String[] words = phrase.split("_");
String newPhrase = words[0];
for(int i=1; i<words.length; i++){
newPhrase += words[i].substring(0,1).toUpperCase() + words[i].substring(1);
}
Run Code Online (Sandbox Code Playgroud)
这可能很漂亮,并且可以在公共类Test {
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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8879 次 |
| 最近记录: |