Mayúsculas y minúsculas en Java
Veamos posibilidades de Java para convertir cadenas de texto a mayúsculas o minúsculas. Formas de verificar si un carácter es una letra, un número, un espacio, mayúscula, minúscula, etc.
Usaremos para los ejemplos una cadena con caracteres variados
// Cadena con mayúsculas, minúsculas, números y caracteres especiales.
// \u2164 es cinco en números romanos Ⅴ
String s = "aáA #1çº\u2164\t\n";
Métodos String toUpperCase() y toLowerCase()[editar]
La clase String
tiene los métodos toLowerCase()
para convertir la cadena a minúsculas y tuUpperCase()
para convertirla a mayúsculas.
System.out.println(s.toLowerCase());
System.out.println(s.toUpperCase());
La salida de estas dos líneas es la siguiente
aáa #1çºⅴ AÁA #1ǺⅤ
Puedes ver que convierte, aparte de letras normales, las letras con acento, la cedilla ç y el cinco en números romanos (que no es una V sino una Ⅴ, distinto código unicode).
Métodos Character isLowerCase() e isUpperCase()[editar]
No hay métodos para ver si una cadena completa es mayúscula o minúscula. Tenemos que ir caracter a caracter y usar los métodos isLowerCase()
y isUpperCase()
de la clase Character
.
El siguiente bucle
s.chars().forEach(l -> {
System.out.printf("%c is LowerCase %b\n", l, Character.isLowerCase(l));
});
da la siguiente salida
a is LowerCase true á is LowerCase true A is LowerCase false is LowerCase false # is LowerCase false 1 is LowerCase false ç is LowerCase true º is LowerCase true Ⅴ is LowerCase false is LowerCase false is LowerCase false
mientras que el siguiente bucle
s.chars().forEach(l -> {
System.out.printf("%c is UpperCase %b\n", l, Character.isUpperCase(l));
});
devuelve la siguiente salida
a is UpperCase false á is UpperCase false A is UpperCase true is UpperCase false # is UpperCase false 1 is UpperCase false ç is UpperCase false º is UpperCase false Ⅴ is UpperCase true is UpperCase false is UpperCase false
Puedes ver que las letras las hace correctamente, con acentos, cedillas o incluso el Ⅴ romano. Pero ambas devuelven false en todo aquello que no es capaz de interpretar como letra, es decir, espacios, tabuladores, números y símbolos como #.
Para verificar si una letra es mayúscula o minúscula, debemos verificar primero que, efectivamente, es una letra.
Métodos Character isDigit(), isLetter(), isAlphabetic(), isLetterOrDigit()[editar]
Los métodos isDigit()
, isLetter()
, isAlphabetic()
, isLetterOrDigit()
nos ayudan a ver qué tipo de caracter tenemos entre manos. El código sería similar al que hemos visto, pero llamando a estos métodos. Pongamos, para verlo más rápido, en forma de tabla el resultado de estos cuatro métodos para los caracteres del String
Método | a | á | A | # | 1 | ç | º | Ⅴ | \t | \n | |
---|---|---|---|---|---|---|---|---|---|---|---|
isDigit() | false | false | false | false | false | true | false | false | false | false | false |
isLetter() | true | true | true | false | false | false | true | true | false | false | false |
isAlphabetic() | true | true | true | false | false | false | true | true | true | false | false |
isLetterOrDigit() | true | true | true | false | false | true | true | true | false | false | false |
Muchas casos son evidentes, veamos los "raros".
Uno es el número romano Ⅴ. isLetter()
no lo considera una letra, puesto que en realidad representa un número. Pero isDigit()
tampoco lo considera un dígito. isAlphabetic()
si lo considera un caracter alfabético. De hecho, este tipo de letras que representan números es la única diferencia entre isLetter()
e isAlphabetic()
. El primero no los considera letrás, pero el segundo si lo considera un carácter alfabético.
No tenemos comportamientos raros con los acentos, cedillas o incluso con el º, que se considera letra.
Los símbolos como #, los espacios en blanco, tabuladores y retornos de carro no son ni dígitos ni letras.
Método Character isSpaceChar() e isWhitespace()[editar]
Estos métodos buscan caracteres "en blanco". La diferencia entre ellos es que isSpaceChar()
sólo reconoce espacios en blanco, pero no tabuladores ni retornos de carro. isWhitespace()
reconoce todos ellos. Nuevamente, lo ponemos en forma de tabla para que se vea más claro
Método | a | á | A | # | 1 | ç | º | Ⅴ | \t | \n | |
---|---|---|---|---|---|---|---|---|---|---|---|
isSpaceChar() | false | false | false | true | false | false | false | false | false | false | false |
isWhitespace() | false | false | false | true | false | false | false | false | false | true | true |