用于在java中将CamelCase转换为camel_case的正则表达式

2022-08-31 10:16:07

我理解为什么没有给出所需的输出来使用正则表达式转换一个字符串,而不是给出.我本可以使用String.substring做一些事情,或者只是替换最后一个字符,但我认为这种情况有更好的解决方案。FooBarFoo_BarFoo_Bar_substring(0, string.length() - 2)

代码如下:

String regex = "([A-Z][a-z]+)";
String replacement = "$1_";

"CamelCaseToSomethingElse".replaceAll(regex, replacement); 

/*
outputs: Camel_Case_To_Something_Else_
desired output: Camel_Case_To_Something_Else
*/

问题:寻找一种更整洁的方式来获得所需的输出?


答案 1

从番石榴中看到这个问题案例格式

在你的情况下,像这样:

CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, "SomeInput");

答案 2

将小写和大写两组绑定,就可以了

public  class Main
{
    public static void main(String args[])
    {
        String regex = "([a-z])([A-Z]+)";
        String replacement = "$1_$2";
        System.out.println("CamelCaseToSomethingElse"
                           .replaceAll(regex, replacement)
                           .toLowerCase());
    }
}