Index: lutinutil/src/java/org/codelutin/util/StringUtil.java diff -u lutinutil/src/java/org/codelutin/util/StringUtil.java:1.25 lutinutil/src/java/org/codelutin/util/StringUtil.java:1.26 --- lutinutil/src/java/org/codelutin/util/StringUtil.java:1.25 Mon Dec 17 23:31:16 2007 +++ lutinutil/src/java/org/codelutin/util/StringUtil.java Tue Dec 18 00:35:51 2007 @@ -22,9 +22,9 @@ * * @author POUSSIN Benjamin * Copyright Code Lutin - * @version $Revision: 1.25 $ + * @version $Revision: 1.26 $ * - * Mise a jour: $Date: 2007-12-17 23:31:16 $ + * Mise a jour: $Date: 2007-12-18 00:35:51 $ * par : $Author: tchemit $ */ package org.codelutin.util; @@ -507,26 +507,41 @@ */ public static String convertToConstantName(String name) { StringBuilder sb = new StringBuilder(); + char lastChar=0; for (int i = 0, j = name.length(); i < j; i++) { char c = name.charAt(i); if (Character.isDigit(c)) { sb.append(c); + lastChar = c; continue; } if (!Character.isLetter(c)) { - if (c=='_') { - sb.append('_'); - } + if (lastChar != '_') { + sb.append('_'); + } + lastChar='_'; continue; } if (Character.isUpperCase(c)) { - sb.append('_').append(c); + if (!Character.isUpperCase(lastChar)&&lastChar!='_') { + sb.append('_'); + } + sb.append(c); } else { sb.append(Character.toUpperCase(c)); } + lastChar=c; } String result = sb.toString(); - return result.startsWith("_") ? result.substring(1) : result; + // clean tail + while (!result.isEmpty() && result.endsWith("_")) { + result = result.substring(0,result.length()-1); + } + // clean head + while (!result.isEmpty() && result.startsWith("_")) { + result = result.substring(1); + } + return result; } }