En esta ocasión vamos a ver cómo se puede resolver un problema que a primera vista parece sencillo: localizar la palabra más larga en una cadena de texto. Para conseguir este objetivo va a ser necesario separar las palabras, ignorando los signos de puntuación, y medir la longitud de estas. Para lo que vamos a utilizar expresiones regulares en JavaScript.
En primer lugar, es necesario eliminar los signos de puntuación de la cadena de texto. Lo que es necesario hacer antes de separar las palabras para evitar que se tengan en cuenta esos caracteres a la hora de medir la longitud de cada una de las palabras. Algo que se puede conseguir fácilmente mediante el uso de expresiones regulares. Aunque, en el caso de trabajar en lenguas romances, como es el caso del español, hay que tener en cuenta la posible existencia de acentos u otros símbolos que no existen en inglés en el texto, por lo que se tienen que usar una expresión regular que incluya los caracteres latinos. Así para eliminar los signos de puntuación se puede reemplazar estos por cadenas vacías con
text.replace(/[^a-zA-Z\u00C0-\u017F\s]/, "");
Ahora ya se puede separar las palabras mediante el uso del método split() con el espacio como separador de palabras. Aunque, si fuese necesario contar correctamente el número de palabras y existiese dobles o triples espacios aparecerán varias cadenas varias. Problema que se puede resolver mediante el método filter(), seleccionando las cadenas que no están vacías. Así, se podría obtener las palabras simplemente con la siguiente línea.
text.split(" ").filter(t => t.length > 0); En donde text es la cadena de texto ya sin signos de puntuación.
Posiblemente una vez realizado el procesado anterior esta tarea sea la más fácil del proceso. Mediante un método reduce() se puede obtener la longitud de la palabra más larga de la lista.
const max = words.reduce((l, w) => Math.max(l, w.length), 0);
Valor que se puede usar posteriormente para seleccionar las palabras que sean repetidas.
words.filter(t => t.length == max)
Ahora puede ser necesario eliminar palabras duplicadas, en tal caso como se ha explicado anteriormente el método más rápido es usar Set
[…new Set(words)];
Con todo lo visto se puede crear una función para obtener la palabra más larga de una cadena de tal como la que se muestra a continuación.
function getLargestWords(text) {
const words = text.replace(/[^a-zA-Z\u00C0-\u017F\s]/, "")
.split(" ").filter(i => i.length > 0);
const max = words.reduce((l, w) => Math.max(l, w.length), 0);
return [... new Set(words.filter(t => t.length == max))];
} En esta entrada hemos visto cómo se puede solucionar en JavaScript la búsqueda de la palabra más larga en una cadena de texto.
Imagen de Willi Heidelbach en Pixabay
Cuando un banco evalúa una solicitud de crédito necesita responder a una pregunta aparentemente simple:…
En el octavo aniversario de Analytics Lane seguimos ampliando nuestro laboratorio de aplicaciones interactivas y,…
Hoy, 2 de mayo de 2026, Analytics Lane cumple exactamente ocho años. Todo empezó con…
La nueva herramienta permite calcular la rentabilidad real de inversiones con múltiples aportaciones, retiradas y…
Analytics Lane continúa ampliando su laboratorio de utilidades para desarrolladores y analistas de datos con…
Analytics Lane continúa ampliando su laboratorio de herramientas para desarrolladores con el lanzamiento del Formateador…
This website uses cookies.