Author: brentworden Date: Fri Jun 28 16:21:09 2013 New Revision: 1497829 URL: http://svn.apache.org/r1497829 Log: short circuit (un)capitalize if string is already (un)capitalized.
Modified: commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringUtilsTest.java Modified: commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java?rev=1497829&r1=1497828&r2=1497829&view=diff ============================================================================== --- commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java (original) +++ commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/StringUtils.java Fri Jun 28 16:21:09 2013 @@ -5581,8 +5581,15 @@ public class StringUtils { if (str == null || (strLen = str.length()) == 0) { return str; } + + char firstChar = str.charAt(0); + if (Character.isTitleCase(firstChar)) { + // already capitalized + return str; + } + return new StringBuilder(strLen) - .append(Character.toTitleCase(str.charAt(0))) + .append(Character.toTitleCase(firstChar)) .append(str.substring(1)) .toString(); } @@ -5612,8 +5619,15 @@ public class StringUtils { if (str == null || (strLen = str.length()) == 0) { return str; } + + char firstChar = str.charAt(0); + if (Character.isLowerCase(firstChar)) { + // already uncapitalized + return str; + } + return new StringBuilder(strLen) - .append(Character.toLowerCase(str.charAt(0))) + .append(Character.toLowerCase(firstChar)) .append(str.substring(1)) .toString(); } Modified: commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringUtilsTest.java URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringUtilsTest.java?rev=1497829&r1=1497828&r2=1497829&view=diff ============================================================================== --- commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringUtilsTest.java (original) +++ commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/StringUtilsTest.java Fri Jun 28 16:21:09 2013 @@ -129,14 +129,20 @@ public class StringUtilsTest { assertEquals(null, StringUtils.uncapitalize(null)); assertEquals("capitalize(empty-string) failed", - "", StringUtils.capitalize("") ); + "", StringUtils.capitalize("") ); assertEquals("capitalize(single-char-string) failed", "X", StringUtils.capitalize("x") ); - + assertEquals("capitalize(String) failed", + FOO_CAP, StringUtils.capitalize(FOO_CAP) ); + assertEquals("capitalize(string) failed", + FOO_CAP, StringUtils.capitalize(FOO_UNCAP) ); + assertEquals("uncapitalize(String) failed", - FOO_UNCAP, StringUtils.uncapitalize(FOO_CAP) ); + FOO_UNCAP, StringUtils.uncapitalize(FOO_CAP) ); + assertEquals("uncapitalize(string) failed", + FOO_UNCAP, StringUtils.uncapitalize(FOO_UNCAP) ); assertEquals("uncapitalize(empty-string) failed", - "", StringUtils.uncapitalize("") ); + "", StringUtils.uncapitalize("") ); assertEquals("uncapitalize(single-char-string) failed", "x", StringUtils.uncapitalize("X") );