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

新手上路,请多包涵

我明白为什么没有给出所需的输出来使用正则表达式将字符串转换为 FooBarFoo_Bar 而是给出 Foo_Bar_ 我本可以用 String.substring 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
*/

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

原文由 ajmartin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 723
2 个回答

看到这个 问题CaseFormat 来自番石榴

在你的情况下,是这样的:

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

原文由 user180100 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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());
    }
}

原文由 clevertension 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题