for (int j = 0; j < arraylistaDeTiposDeAtributosDelVO.size(); j++)
{
String cadenaOriginal = "";
String cadena1 = "";
String cadena2 = "";
cadenaOriginal = arraylistaDeTiposDeAtributosDelVO.get(j).toString();
int inicioConversion = 0;
int iMayusculasEncontradas = 0;
String sGuionBajo = "_";
for (int k = 0; k < cadenaOriginal.length(); k++)
{
char miChar = cadenaOriginal.charAt(k);
if (Character.isUpperCase(miChar))
{
String miChar2 = Character.toString(miChar);
String miChar3 = sGuionBajo + miChar2;
cadena1 = cadenaOriginal.substring(inicioConversion, k + 1);
//Eliminamos el character en Uppercase y los sustituimos por _caracter en uppercase
int iCorte = cadena1.length() - 1;
cadena1 = cadena1.substring(0, iCorte);
cadena1 = cadena1 + miChar3;
//cadena1 = cadena1.replaceFirst(miChar2, miChar3); //Da problemas si hay dos uppercase del mismo miChar
//
//Si es la primera conversion
if (inicioConversion > 0)
{
cadena2 = cadena2 + cadena1.substring(1);
}
else
{
cadena2 = cadena2 + cadena1;
}
inicioConversion = k;
iMayusculasEncontradas++;
}
}
/**La cadena queda truncada justo despues de la ultima uppercase.
Ejemplo. miCasa queda como mi_C
Esto sirve para rellenar el trozo de cadena que falta***/
if (cadena2.length() - iMayusculasEncontradas != cadenaOriginal.length() && iMayusculasEncontradas != 0)
{
String cadenaAAnyadir = cadenaOriginal.substring(
cadenaOriginal.length() - iMayusculasEncontradas
- (cadenaOriginal.length() - cadena2.length())).toUpperCase();
cadena2 = (cadena2 + cadenaAAnyadir);
}
/**Si no tiene mayusculas usamos el mismo nombre en mayusculas**/
if (iMayusculasEncontradas == 0)
{
cadena2 = cadenaOriginal.toUpperCase();
}
arrayDeCadenas.add(cadenaOriginal + "|" + cadena2.toUpperCase());
}
}