Función cleanText (sin dependencias)
Normaliza saltos de línea, espacios múltiples, comillas tipográficas y caracteres invisibles. Cada limpieza se activa por opción.
type TextCleanerOptions = {
removeMultipleSpaces: boolean;
removeExtraLineBreaks: boolean;
trimEdges: boolean;
normalizeQuotes: boolean;
removeInvisibleCharacters: boolean;
collapseEmptyLines: boolean;
};
export function cleanText(input: string, options: TextCleanerOptions): string {
let output = input.replace(/\r\n?/g, "\n");
if (options.removeInvisibleCharacters) {
output = output.replace(
/[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F\u200B-\u200D\uFEFF]/g,
"",
);
}
if (options.normalizeQuotes) {
output = output.replace(/[‘’‚‛]/g, "'").replace(/[“”„‟]/g, '"');
}
if (options.removeExtraLineBreaks) {
output = output.replace(/[^\S\n]+\n/g, "\n").replace(/\n[^\S\n]+/g, "\n");
}
if (options.removeMultipleSpaces) {
output = output.replace(/[^\S\n]{2,}/g, " ");
}
if (options.collapseEmptyLines) {
output = output.replace(/\n{3,}/g, "\n\n");
}
if (options.trimEdges) {
output = output.trim();
}
return output;
}Notas de uso
- Pasá un objeto con todas las opciones en true para una limpieza completa, o desactivá las que no quieras.
- La función no muta el input: devuelve un texto nuevo.
Limitaciones
- Trabaja sobre strings; no abre ni lee archivos.
- No corrige ortografía ni gramática, solo normaliza formato.