Skip to content

Normalize Text

Esta colección de funciones está diseñada para facilitar el trabajo con texto en aplicaciones web. Incluye métodos para:

  • Normalizar texto eliminando acentos y convirtiendo a minúsculas.
  • Comparar cadenas de texto de forma insensible a mayúsculas/minúsculas y acentos.
  • Truncar textos largos para adaptarlos a un espacio limitado.

/**
* Elimina acentos y convierte el texto a minúsculas.
* Ideal para búsquedas insensibles a acentos y mayúsculas.
*/
export const normalizeText = (text: string) => {
return text
.normalize("NFD") // Normaliza caracteres Unicode
.replace(/[\u0300-\u036f]/g, "") // Elimina marcas diacríticas (acentos)
.toLowerCase();
};
/**
* Compara dos textos normalizados para saber si uno incluye al otro.
*/
export const compareNormalizedText = (
principalText: string,
textIncludes: string
) => {
return normalizeText(principalText).includes(normalizeText(textIncludes));
};
/**
* Corta un texto si supera cierta longitud y añade puntos suspensivos.
*/
export const truncateText = (text: string, maxLength: number) => {
if (text.length <= maxLength) {
return text;
}
text = text.trim();
return `${text.substring(0, maxLength - 3)} ...`;
};
normalizeText("Crème Brûlée"); // ➜ "creme brulee"

Comparar textos ignorando acentos y mayúsculas

Section titled “Comparar textos ignorando acentos y mayúsculas”
compareNormalizedText("Café del Mar", "cafe"); // ➜ true
compareNormalizedText("NiÑO PERDIDO", "niño"); // ➜ true
compareNormalizedText("El Árbol", "arbol"); // ➜ true
truncateText("Este es un texto muy largo que necesita ser acortado", 25); // ➜
// "Este es un texto muy la ..."
truncateText("Texto corto", 20); // ➜ "Texto corto"