Siéntete libre de divulgar nuestros tutoriales y códigos en tus redes, necesitamos tu ayuda para ampliar nuestra comunidad.
Solución:
setText
es cambiar el contenido del texto a exactamente lo que le das, no agregarlo.
Convertir el String
primero del campo, luego aplicarlo directamente…
String value = "This Is A Test";
StringBuilder sb = new StringBuilder(value);
for (int index = 0; index < sb.length(); index++)
char c = sb.charAt(index);
if (Character.isLowerCase(c))
sb.setCharAt(index, Character.toUpperCase(c));
else
sb.setCharAt(index, Character.toLowerCase(c));
SecondTextField.setText(sb.toString());
No es necesario que realice un seguimiento de si ya ha cambiado el carácter de superior a inferior. Su código ya está haciendo eso, ya que es básicamente:
1 for each character x:
2 if x is uppercase:
3 convert x to lowercase
4 else:
5 if x is lowercase:
6 convert x to uppercase.
El hecho de que tengas eso else
allí (en la línea 4) significa que un carácter que inicialmente estaba en mayúsculas nunca se verificará en la segunda if
declaración (en la línea 5).
Ejemplo, comienza con A
. Debido a que está en mayúsculas, se convertirá a minúsculas en la línea 3 y luego volverá a la línea 1 para el próximo personaje.
si empiezas con z
los if
en la línea 2 lo enviará directamente a la línea 5 donde se convertirá a mayúsculas. Todo lo que no esté en mayúsculas ni en minúsculas fallará ambas cosasif
declaraciones y por lo tanto permanecen intactos.
Puedes usar StringUtils.swapCase()
desde org.apache.commons
Eres capaz de animar nuestra labor exponiendo un comentario o puntuándolo te estamos eternamente agradecidos.