Ir al contenido

Poner en mayúsculas después de punto

En ocasiones necesitamos corregir un texto para poner en mayúscula el primer carácter de la cadena y también el que aparece después de cada punto.

Partimos de la siguiente frase:

hola juan. me ha gustado mucho. hagámonos público. mañana hablamos. luis

El resultado esperado es:

Hola juan. Me ha gustado mucho. Hagámonos público. Mañana hablamos. Luis

Para resolverlo usaremos los métodos substring(), toUpperCase() e indexOf(), junto con un bucle que recorra la cadena.

Utilizaremos dos variables: indice, que marcará el inicio de cada fragmento, e indicepunto, que almacenará la posición del siguiente punto.

En la primera iteración, comenzamos al principio de la cadena y buscamos el primer punto:

int indice = 0;
int indicepunto = frase.indexOf('.', indice);

El método indexOf() devuelve la posición del carácter indicado a partir del índice inicial. Si no lo encuentra, devuelve un valor negativo.

Una vez delimitado el fragmento, convertimos su primer carácter a mayúscula:

frase2 = frase2 + frase.substring(indice, indice + 1).toUpperCase();

Después añadimos el resto del fragmento, desde el segundo carácter hasta el punto incluido:

frase2 = frase2 + frase.substring(indice + 1, indicepunto + 1);

La variable frase contiene el texto original, mientras que frase2 almacena el resultado que vamos componiendo.

Repetimos el proceso mientras queden puntos en la cadena:

int indice = 0;
int indicepunto = frase.indexOf('.', indice);
while (indicepunto >= 0) {
// Convertimos a mayúscula el primer carácter del fragmento
frase2 = frase2 + frase.substring(indice, indice + 1).toUpperCase();
// Añadimos el resto del fragmento hasta el punto
frase2 = frase2 + frase.substring(indice + 1, indicepunto + 1);
// Avanzamos hasta el siguiente fragmento
indice = indicepunto + 1;
indicepunto = frase.indexOf('.', indice);
}

Al terminar el bucle todavía queda el texto comprendido entre el último punto y el final de la cadena. Lo añadimos usando .length():

frase2 = frase2 + frase.substring(indice, indice + 1).toUpperCase();
frase2 = frase2 + frase.substring(indice + 1, frase.length());

Finalmente, frase2 contendrá la frase completa con la primera letra y cada carácter posterior a un punto en mayúscula.

Foto de Víctor Cuervo

Víctor Cuervo

Programador, Arquitecto IT, álter ego de Línea de Código, amante de las tecnologías, generador de conocimiento y facilitador del aprendizaje.

Descarga el código de Poner en mayúsculas después de punto

Aprende a poner en mayúscula la primera letra después de cada punto en Java usando indexOf, substring y toUpperCase con un sencillo bucle while.

Descargar código