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.