diff --git a/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/util/StringUtilityTest.java b/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/util/StringUtilityTest.java index a70122340b7..c9880783aa2 100644 --- a/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/util/StringUtilityTest.java +++ b/org.eclipse.scout.rt.platform.test/src/test/java/org/eclipse/scout/rt/platform/util/StringUtilityTest.java @@ -737,6 +737,19 @@ public void testLowercaseFirst() { assertEquals("fOO BAR", StringUtility.lowercaseFirst("FOO BAR")); } + @Test + public void testCamelCaseToUpperCase() { + assertEquals(null, StringUtility.camelCaseToUpperCase(null)); + assertEquals("", StringUtility.camelCaseToUpperCase("")); + assertEquals(" ", StringUtility.camelCaseToUpperCase(" ")); + assertEquals("A", StringUtility.camelCaseToUpperCase("A")); + assertEquals("B", StringUtility.camelCaseToUpperCase("b")); + assertEquals("FOO", StringUtility.camelCaseToUpperCase("Foo")); + assertEquals("FOO", StringUtility.camelCaseToUpperCase("foo")); + assertEquals("FOO_BAR", StringUtility.camelCaseToUpperCase("FooBar")); + assertEquals("FOO_BAR", StringUtility.camelCaseToUpperCase("fooBar")); + } + @Test public void testRandomId() { assertNotNull(StringUtility.randomId()); diff --git a/org.eclipse.scout.rt.platform/src/main/java/org/eclipse/scout/rt/platform/util/StringUtility.java b/org.eclipse.scout.rt.platform/src/main/java/org/eclipse/scout/rt/platform/util/StringUtility.java index 96543c4b3c0..1f891a9e004 100644 --- a/org.eclipse.scout.rt.platform/src/main/java/org/eclipse/scout/rt/platform/util/StringUtility.java +++ b/org.eclipse.scout.rt.platform/src/main/java/org/eclipse/scout/rt/platform/util/StringUtility.java @@ -1147,6 +1147,33 @@ public static String uppercaseFirst(String s) { return s.substring(0, 1).toUpperCase() + s.substring(1); } + /** + * Transforms a camel case formatted string to upper case with underlines string. + *

+ * Examples: + *

+ */ + public static String camelCaseToUpperCase(String s) { + if (isNullOrEmpty(s)) { + return s; + } + int len = s.length(); + StringBuilder builder = new StringBuilder(len); + builder.append(Character.toUpperCase(s.charAt(0))); + for (int i = 1; i < len; i++) { + char c = s.charAt(i); + if (Character.isUpperCase(c)) { + builder.append('_'); + } + builder.append(Character.toUpperCase(c)); + } + return builder.toString(); + } + /** * Null-safe version of {@link String#split(String)}. *