Two new static methods in StringUtils: camelCaseToUnderscoreSeparated(String) 
and underscoreSeparatedToCamelCase(String)
------------------------------------------------------------------------------------------------------------------------

                 Key: LANG-415
                 URL: https://issues.apache.org/jira/browse/LANG-415
             Project: Commons Lang
          Issue Type: New Feature
    Affects Versions: 2.3
            Reporter: Grzegorz Błaszczyk
             Fix For: 2.4


Index: /CommonsLang/src/java/org/apache/commons/lang/StringUtils.java
===================================================================
--- /CommonsLang/src/java/org/apache/commons/lang/StringUtils.java      
(revision 633306)
+++ /CommonsLang/src/java/org/apache/commons/lang/StringUtils.java      
(working copy)
@@ -2782,6 +2782,60 @@
         list.add(new String(c, tokenStart, c.length - tokenStart));
         return (String[]) list.toArray(new String[list.size()]);
     }
+    /**
+     * Changes a camelCase string value to underscore separated
+     * @param input
+     * @param toLowerCase - if output string should be lower case
+     * @return underscore separated string
+     */
+    public static String camelCaseToUnderscoreSeparated(String input,
+                       boolean toLowerCase) {
+               StringBuilder s = new StringBuilder();
+               if (input == null) {
+                       return "";
+               }
+               int length = input.length();
+               for (int i = 0; i < length; i++) {
+                       char ch = input.charAt(i);
+                       if (Character.isUpperCase(ch) && i > 0) {
+                               s.append("_");
+                       }
+                       if (ch == '.') {
+                               s.append("_");
+                       } else {
+                               s.append(toLowerCase ? 
Character.toLowerCase(ch) : Character
+                                               .toUpperCase(ch));
+                       }
+               }
+               return s.toString();
+       }
+       
+    /**
+     * Changes a underscore separated string value to camelCase
+     * @param input
+     * @return camelScape string
+     */
+       public static String underscoreSeparatedToCamelCase(String input) {
+               StringBuilder s = new StringBuilder();
+               if (input == null) {
+                       return "";
+               }
+               int length = input.length();
+               boolean upperCase = false;
+               
+               for (int i = 0; i < length; i++) {
+                       char ch = input.charAt(i);
+                       if (ch == '_') {
+                               upperCase = true;
+                       } else if (upperCase) {
+                               s.append(Character.toUpperCase(ch));
+                               upperCase = false;
+                       } else {
+                               s.append(ch);
+                       }
+               }
+               return s.toString();
+       }
 
     // Joining
     //-----------------------------------------------------------------------


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to