我想編寫一種將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條經驗 獲得超8個贊
如果您不喜歡“復雜的”正則表達式,并且完全不關心效率,那么我已使用此示例在三個階段中實現了相同的效果。
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
提交
取消