我想编写一个方法,将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"));
}
发布于 2013-09-19 13:57:31
您可以使用org.apache.commons.lang.StringUtils
完成此操作
StringUtils.join(
StringUtils.splitByCharacterTypeCamelCase("ExampleTest"),
' '
);
发布于 2017-10-26 12:10:17
简洁而简短的解决方案:
StringUtils.capitalize(StringUtils.join(StringUtils.splitByCharacterTypeCamelCase("yourCamelCaseText"), StringUtils.SPACE)); // Your Camel Case Text
发布于 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();
它通过了上面所有的测试用例,包括数字测试用例。
正如我所说的,这不如在这里的其他一些示例中使用一个正则表达式-但有人可能会发现它很有用。
https://stackoverflow.com/questions/2559759
复制相似问题