Vista General - Strings
Paquete: @tiendana/utils
Utilidades para manipular, transformar y formatear strings de forma eficiente y segura.
Funciones Disponibles
Truncado
truncateString - Trunca un string a una longitud máxima específica.
truncateString('Este es un texto largo', 10);
// 'Este es un'
Slugs y URLs
stringToSlug - Convierte un string a formato URL-friendly (slug), removiendo acentos y caracteres especiales.
stringToSlug('¡Hola Mundo! ¿Cómo estás?');
// 'hola-mundo-como-estas'
Normalización
removeDiacritics - Remueve acentos y diacríticos de caracteres, manteniendo caracteres base.
removeDiacritics('Äpfel, Äpfel, über alles');
// 'Apfel, Apfel, uber alles'
Parsing
parseName - Analiza un nombre completo y lo separa en componentes (nombre, apellidos).
parseName('Juan Carlos García López');
// {
// name: 'Juan Carlos',
// firstName: 'García',
// secondLastName: 'López',
// lastName: 'García López',
// joined: 'Juan Carlos García López'
// }
Uso Común
Crear URLs Amigables
import { stringToSlug } from '@tiendana/utils';
const title = 'Las Mejores Prácticas de JavaScript en 2024';
const url = `/blog/${stringToSlug(title)}`;
// '/blog/las-mejores-practicas-de-javascript-en-2024'
Mostrar Texto Truncado
import { truncateString } from '@tiendana/utils';
function ProductCard({ description }: { description: string }) {
const shortDesc = truncateString(description, 100);
return (
<div>
<p>{shortDesc}...</p>
<a href="#">Leer más</a>
</div>
);
}
Búsqueda Sin Acentos
import { removeDiacritics } from '@tiendana/utils';
function searchUsers(query: string, users: User[]) {
const normalizedQuery = removeDiacritics(query.toLowerCase());
return users.filter(user => {
const normalizedName = removeDiacritics(user.name.toLowerCase());
return normalizedName.includes(normalizedQuery);
});
}
// 'Jose' encontrará 'José'
// 'Maria' encontrará 'María'
Procesar Nombres de Usuarios
import { parseName } from '@tiendana/utils';
function registerUser(fullName: string) {
const parsed = parseName(fullName);
return {
firstName: parsed.name,
lastName: parsed.lastName,
displayName: parsed.joined
};
}
registerUser('Ana María Rodríguez González');
// {
// firstName: 'Ana María',
// lastName: 'Rodríguez González',
// displayName: 'Ana María Rodríguez González'
// }
Casos de Uso Comunes
SEO y URLs
import { stringToSlug, removeDiacritics } from '@tiendana/utils';
// Slugs para artículos
const articleSlug = stringToSlug('Guía Definitiva de TypeScript');
// URLs de categorías
const categoryUrl = stringToSlug('Tecnología & Innovación');
// 'tecnologia-innovacion'
// Nombres de archivos
const fileName = removeDiacritics('Reporte Año 2024.pdf');
// 'Reporte Ano 2024.pdf'
UI/UX
import { truncateString } from '@tiendana/utils';
// Previews de contenido
const preview = truncateString(article.content, 200);
// Nombres de archivo largos
const shortFileName = truncateString(file.name, 30);
// Títulos en cards
const cardTitle = truncateString(product.title, 50);
Formularios
import { parseName } from '@tiendana/utils';
// Autocompletar nombre/apellido
function handleNameInput(fullName: string) {
const { name, lastName } = parseName(fullName);
form.setValue('firstName', name);
form.setValue('lastName', lastName);
}
Características
✅ Unicode-aware - Maneja correctamente caracteres especiales
✅ Locale-friendly - Soporta español, portugués, francés, etc.
✅ Type-safe - Tipos completos en TypeScript
✅ Sin dependencias - Código puro JavaScript