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:

Java

Algoritmos

Si el post ha sido de tu agrado te invito a que me sigas para saber cuando haya escrito un nuevo post, haya actualizado algún sistema o publicado un nuevo software. Facebook | X | Instagram | Telegram | También estoy a tus órdenes para cualquier contratación en mi página de contacto