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") );
                      


Reply via email to