Convertir a mayúscula cada palabra de una cadena en Java
Siguiendo con los ejercicios de Java con cadenas vamos a ver hoy cómo capitalizar toda una cadena u oración. Es decir, vamos a ver cómo convertir a mayúscula la primera letra de cada palabra en una String.
Esto es diferente a cuando convertimos únicamente la primera letra a mayúscula y dejamos las demás intactas.
En resumen, vamos a convertir algo como “hola mundo soy una cadena” a algo como “Hola Mundo Soy Una Cadena”; poniendo la primera letra de cada palabra en mayúscula.
Nota: recuerda que ya vimos cómo convertir a mayúscula y minúscula.
Algoritmo para convertir primera letra mayúscula en Java
Veamos el algoritmo o la forma difícil y entretenida. Cada palabra va separada por un espacio, así que convertimos la cadena a arreglo con split
usando el espacio como delimitador.
Después, cuando ya tengamos cada palabra en el arreglo, vamos convirtiendo la primera letra de esa palabra a mayúscula y la concatenamos a una nueva cadena.
En cada iteración agregamos un espacio, excepto en la final. Así “rearmamos” la cadena pero con la primera letra ya capitalizada. El código queda así:
public static String capitalizar(String cadena) {
// Separar palabras de la cadena
String[] separadaPorEspacios = cadena.split(" ");
StringBuilder sb = new StringBuilder();
for (int indice = 0; indice < separadaPorEspacios.length; indice++) {
String palabra = separadaPorEspacios[indice];
// De la palabra, primero agregar la primera letra ya convertida a mayúscula
char primeraLetra = palabra.charAt(0);
sb.append(Character.toUpperCase(primeraLetra));
// Luego agregarle "lo sobrante" de la palabra
sb.append(palabra.substring(1));
// Y si no es el último elemento del arreglo, le añadimos un espacio
if (indice < separadaPorEspacios.length - 1)
sb.append(" ");
}
// Finalmente regresamos la cadena
return sb.toString();
}
Es una función estática que recibe una cadena y devuelve una cadena ya capitalizada. Su modo de uso podría ser el siguiente:
class Main {
public static void main(String[] args) {
String original = "Yo soy una simple cadena en Java :)";
System.out.println("Original: " + original);
String capitalizada = capitalizar(original);
System.out.println("Capitalizada: " + capitalizada);
}
public static String capitalizar(String cadena) {
// Separar palabras de la cadena
String[] separadaPorEspacios = cadena.split(" ");
StringBuilder sb = new StringBuilder();
for (int indice = 0; indice < separadaPorEspacios.length; indice++) {
String palabra = separadaPorEspacios[indice];
// De la palabra, primero agregar la primera letra ya convertida a mayúscula
char primeraLetra = palabra.charAt(0);
sb.append(Character.toUpperCase(primeraLetra));
// Luego agregarle "lo sobrante" de la palabra
sb.append(palabra.substring(1));
// Y si no es el último elemento del arreglo, le añadimos un espacio
if (indice < separadaPorEspacios.length - 1)
sb.append(" ");
}
// Finalmente regresamos la cadena
return sb.toString();
}
}
Así es como terminamos por hoy. Mira más sobre: