• Sábado 21 de Septiembre de 2024, 21:38

Autor Tema:  Buscar Un Uppercase En String  (Leído 2490 veces)

KAOZ23

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Buscar Un Uppercase En String
« en: Miércoles 13 de Febrero de 2008, 01:58 »
0
****Solucionado, ver el post 3*****

Buenas a todos:
Escribo aqui para ver si alguien me puede orientar, ya qu estoy muy cerca, pero me falta algun paso

Tengo cadenas de caracteres String en un ArrayList. Las cadenas son del tipo miCasa, enUnPaisMulticolor....(en realidad son atributos de un objeto),
y necesito, debido a la metrica, pasarlos a mayusculas, con la siguiente nomenclatura:

MI_CASA, EN_UN_PAIS_MULTICOLOR....


Ya he encontrado la forma de averiguar donde están las mayusculas, de la siguiente manera:
Código: Text
  1.  
  2. for (int i= 0; i < listaDefinicionesAtributos.size(); i++)
  3.         {
  4.     char[] cadenaOriginal = listaDefinicionesAtributos.get(i).toString().toCharArray();
  5. boolean esMayuscula = false;
  6.           
  7. for (int kk = 0; kk < cadenaOriginal.length; kk++)
  8. {
  9. char michar = cadenaOriginal[kk];
  10. if (Character.isLowerCase(michar))
  11.   {
  12.             esMayuscula = true;
  13. pepito = listaDefinicionesAtributos.get(i).toString().lastIndexOf(michar);
  14.   continue;
  15.   }
  16.             
  17. }
  18.           
  19. if (esMayuscula)
  20. {
  21.             System.out.println(listaDefinicionesAtributos.get(i).toString() + " " + " "+ "pepito " + pepito);
  22.   }
  23.  
  24.  

Ahora solo me falta como saber las posiciones de las mayusculas.

He probado con
Código: Text
  1.  
  2. int juanito = listaDefinicionesAtributos.get(kk).toString().indexOf(michar);
  3.  
  4.  
pero no me devuelve las posiciones que necesito.....alguna ayudita?

He buscado, pero no encuentro nada parecido, solo el caso en el que hay una sola mayuscula en el String....

arielb

  • Moderador
  • ******
  • Mensajes: 771
  • Nacionalidad: pa
    • Ver Perfil
    • http://coder-pa.blogspot.com
Re: Buscar Un Uppercase En String
« Respuesta #1 en: Miércoles 13 de Febrero de 2008, 03:30 »
0
Hola, el método indexOf(), retorna la posición solo que recuerda que las posiones empiezan desde 0. Hasta el momento no sé o no recuerdo si existe otro método que devuelva la posición. pero también puedes guiarte con la variable del ciclo.
suerte.
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16

http://coder-pa.blogspot.com

KAOZ23

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Buscar Un Uppercase En String
« Respuesta #2 en: Sábado 16 de Febrero de 2008, 21:09 »
0
Solucionado (Codigo incluido):

Código: Text
  1.             for (int j = 0; j < arraylistaDeTiposDeAtributosDelVO.size(); j++)
  2.               {
  3.                 String cadenaOriginal = "";
  4.                 String cadena1 = "";
  5.                 String cadena2 = "";
  6.  
  7.                 cadenaOriginal = arraylistaDeTiposDeAtributosDelVO.get(j).toString();
  8.                 int inicioConversion = 0;
  9.                 int iMayusculasEncontradas = 0;
  10.                 String sGuionBajo = "_";
  11.                 for (int k = 0; k < cadenaOriginal.length(); k++)
  12.                   {
  13.                     char miChar = cadenaOriginal.charAt(k);
  14.  
  15.                     if (Character.isUpperCase(miChar))
  16.                       {
  17.                         String miChar2 = Character.toString(miChar);
  18.                         String miChar3 = sGuionBajo + miChar2;
  19.                        
  20.                         cadena1 = cadenaOriginal.substring(inicioConversion, k + 1);
  21.                        
  22.  
  23.                       
  24.  
  25.                         //Eliminamos el character en Uppercase y los sustituimos por _caracter en uppercase
  26.                         int iCorte = cadena1.length() - 1;
  27.                     
  28.                         cadena1 = cadena1.substring(0, iCorte);
  29.                         cadena1 = cadena1 + miChar3;
  30.                         //cadena1 = cadena1.replaceFirst(miChar2, miChar3); //Da problemas si hay dos uppercase del mismo miChar
  31.                         //                        
  32.                         //Si es la primera conversion
  33.                         if (inicioConversion > 0)
  34.                           {
  35.                             cadena2 = cadena2 + cadena1.substring(1);
  36.                           }
  37.                         else
  38.                           {
  39.                             cadena2 = cadena2 + cadena1;
  40.                           }
  41.                         inicioConversion = k;
  42.                         iMayusculasEncontradas++;
  43.  
  44.                       }
  45.                   }
  46.  
  47. /**La cadena queda truncada justo despues de la ultima uppercase.
  48. Ejemplo. miCasa queda como mi_C
  49. Esto sirve para rellenar el trozo de cadena que falta***/
  50.                 if (cadena2.length() - iMayusculasEncontradas != cadenaOriginal.length() && iMayusculasEncontradas != 0)
  51.                   {
  52.                     String cadenaAAnyadir = cadenaOriginal.substring(
  53.                         cadenaOriginal.length() - iMayusculasEncontradas
  54.                             - (cadenaOriginal.length() - cadena2.length())).toUpperCase();
  55.                     cadena2 = (cadena2 + cadenaAAnyadir);
  56.  
  57.                   }
  58.                 /**Si no tiene mayusculas usamos el mismo nombre en mayusculas**/
  59.                 if (iMayusculasEncontradas == 0)
  60.                   {
  61.                     cadena2 = cadenaOriginal.toUpperCase();
  62.                   }
  63.  
  64.                 arrayDeCadenas.add(cadenaOriginal + "|" + cadena2.toUpperCase());
  65.               }
  66.  
  67.  
  68.           }
  69.  

burke

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Buscar Un Uppercase En String
« Respuesta #3 en: Lunes 18 de Febrero de 2008, 16:18 »
0
mira por donde esto tambien me va a venir bien a mi
thx
;)