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: