我想编写一种将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"));}
3 回答
慕田峪9158850
TA贡献1794条经验 获得超7个赞
您可以使用 org.apache.commons.lang.StringUtils
StringUtils.join(
StringUtils.splitByCharacterTypeCamelCase("ExampleTest"),
' '
);
慕仙森
TA贡献1827条经验 获得超7个赞
如果您不喜欢“复杂的”正则表达式,并且完全不关心效率,那么我已使用此示例在三个阶段中实现了相同的效果。
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();
它通过了上面所有的测试用例,包括带有数字的那些。
就像我说的那样,这不像在这里的其他一些示例中使用一个正则表达式那样好-但有人可能会发现它很有用。
添加回答
举报
0/150
提交
取消