首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Java语言中将CamelCase转换为人类可读的名称?

如何在Java语言中将CamelCase转换为人类可读的名称?
EN

Stack Overflow用户
提问于 2010-04-01 18:42:06
回答 8查看 70.3K关注 0票数 166

我想编写一个方法,将CamelCase转换为人类可读的名称。

下面是测试用例:

public void testSplitCamelCase() {
    assertEquals("lowercase", splitCamelCase("lowercase"));
    assertEquals("Class", splitCamelCase("Class"));
    assertEquals("My Class", splitCamelCase("MyClass"));
    assertEquals("HTML", splitCamelCase("HTML"));
    assertEquals("PDF Loader", splitCamelCase("PDFLoader"));
    assertEquals("A String", splitCamelCase("AString"));
    assertEquals("Simple XML Parser", splitCamelCase("SimpleXMLParser"));
    assertEquals("GL 11 Version", splitCamelCase("GL11Version"));
}
EN

回答 8

Stack Overflow用户

发布于 2013-09-19 13:57:31

您可以使用org.apache.commons.lang.StringUtils完成此操作

StringUtils.join(
     StringUtils.splitByCharacterTypeCamelCase("ExampleTest"),
     ' '
);
票数 134
EN

Stack Overflow用户

发布于 2017-10-26 12:10:17

简洁而简短的解决方案:

StringUtils.capitalize(StringUtils.join(StringUtils.splitByCharacterTypeCamelCase("yourCamelCaseText"), StringUtils.SPACE)); // Your Camel Case Text
票数 27
EN

Stack Overflow用户

发布于 2012-01-12 23:13:15

如果您不喜欢“复杂的”正则表达式,并且根本不关心效率,那么我已经使用这个示例在三个阶段实现了相同的效果。

String name = 
    camelName.replaceAll("([A-Z][a-z]+)", " $1") // Words beginning with UC
             .replaceAll("([A-Z][A-Z]+)", " $1") // "Words" of only UC
             .replaceAll("([^A-Za-z ]+)", " $1") // "Words" of non-letters
             .trim();

它通过了上面所有的测试用例,包括数字测试用例。

正如我所说的,这不如在这里的其他一些示例中使用一个正则表达式-但有人可能会发现它很有用。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2559759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档