- Paso 1: Dividir la cadena en palabras
- Paso 2: Capitalizar cada palabra
- Paso 3: Unir el array en una cadena
- Nota sobre la mutabilidad de words
En muchas entrevistas técnicas piden resolver problemas que prueben tu habilidad para manipular strings y arrays. Uno de los problemas más comunes es:
⏬ Por ejemplo:
const text = 'hello códica';
capitalizeWords(text); // 'Hello Códica'
Existen varias formas de resolverlo, pero en este caso exploraremos una solución utilizando arrays. Veamos cómo funciona.
Paso 1: Dividir la cadena en palabras
Para empezar, queremos separar el texto en palabras individuales. Para ello, usamos el método split(), que nos permite dividir una cadena en un array de partes, especificando un delimitador. En este caso, usaremos un espacio (' ') como delimitador:
const capitalizeWords = (sentence) => {
// Definimos el separador, que en este caso es un espacio
const separator = ' ';
// Dividimos la cadena en palabras
const words = sentence.split(separator);
console.log(words); // ['hello', 'códica']
};
Esto convierte la cadena 'hello códica' en un array ['hello', 'códica'], donde cada elemento representa una palabra.
Paso 2: Capitalizar cada palabra
Ahora que tenemos las palabras separadas, necesitamos convertir la primera letra de cada palabra en mayúscula. Como JavaScript no tiene un método directo para esto en strings, crearemos una función capitalize():
const capitalize = (text) =>
(text.length === 0) ? text : `${text[0].toUpperCase()}${text.slice(1)}`;
¿Cómo funciona?
text[0].toUpperCase()convierte la primera letra en mayúscula.text.slice(1)obtiene el resto de la palabra sin modificarlo.- Si la cadena es vacía (
text.length === 0), simplemente la devolvemos como está, para evitar errores.
Ahora aplicamos esta función a cada palabra en nuestro array:
const capitalizeWords = (sentence) => {
const separator = ' ';
const words = sentence.split(separator);
// Creamos un nuevo array con las palabras capitalizadas
const capitalizedWords = [];
for (const word of words) {
capitalizedWords.push(capitalize(word));
}
// Unimos las palabras capitalizadas nuevamente con espacios
return capitalizedWords.join(separator);
};
console.log(capitalizeWords('hello códica')); // 'Hello Códica'
Paso 3: Unir el array en una cadena
El último paso es la operación inversa a split(). Ahora, con join(' '), reunimos nuevamente las palabras en una sola cadena, separadas por espacios.
return capitalizedWords.join(separator);
Esto nos da la cadena final con cada palabra correctamente capitalizada.
Nota sobre la mutabilidad de words
Al observar nuestro código, notarás que no modificamos el array words directamente, sino que creamos un nuevo array capitalizedWords. Esto tiene una ventaja importante: facilita la depuración. Si algo sale mal, siempre podemos inspeccionar words y capitalizedWords por separado, sin alterar los datos originales.
Si hubiéramos modificado words directamente, perderíamos la referencia a la versión original, lo que haría más difícil detectar errores.
Resumen
- Dividimos la cadena en un array de palabras usando
split(). - Creamos una función
capitalize()para convertir la primera letra de cada palabra en mayúscula. - Recorremos el array aplicando
capitalize()a cada palabra. - Volvemos a unir el array en una cadena con
join(' '). - Evitamos modificar el array original, lo que facilita depuración y mantenimiento.
Esta es solo una de las muchas formas de resolver el problema. En otros cursos, exploraremos métodos alternativos, como el uso de expresiones regulares.
Materiales adicionales
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.