JavaScript

Localizar la palabra más larga en una cadena de texto en JavaScript

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.

Paso 1: eliminar los signos de puntuación

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]/, "");

Paso 2: separar las palabras

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.

Paso 3: localizar la palabra o palabras más largas

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)

Paso 4: Eliminar duplicados

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)];

Creación de una función

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))];
}

Conclusiones

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

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez

Recent Posts

Por Qué las Contraseñas Largas son más Seguras que las Complejas

"Tu contraseña debe tener al menos 8 caracteres, una mayúscula, un número y un símbolo…

5 días ago

Gini, KS y AUC: Cómo Medir la Calidad de un Modelo de Credit Scoring

Cuando un analista de riesgo presenta un nuevo scorecard ante el comité de dirección, la…

7 días ago

Curiosidad: De dónde vienen foo, bar y foobar

Si revisáis código o documentación de otros programadores, tarde o temprano os toparéis con dos…

2 semanas ago

BG/NBD + Gamma/Gamma: el modelo probabilístico para CLV en compras continuas

Los dos artículos anteriores cubrieron el CLV clásico —una fórmula útil pero que trata a…

2 semanas ago

Errores habituales al trabajar con DataFrames grandes en Pandas (y cómo evitarlos)

Hay un momento muy concreto en la vida de casi todo análisis: el código que…

3 semanas ago

Champion vs Challenger: Cómo los Bancos Validan Modelos Nuevos antes de Ponerlos en Producción

Has construido un nuevo modelo de credit scoring. Las métricas de validación son mejores que…

3 semanas ago

This website uses cookies.