Ordenador de Líneas y Eliminador de Duplicados
Ordene líneas de texto de la A a la Z o de la Z a la A, elimine líneas duplicadas y en blanco, y corrija el orden numérico natural para que item2 aparezca antes que item10 — todo al instante en el navegador.
220 visitas
Por Qué "item10" Se Ordena Antes que "item2" en un Orden Alfabético Simple
Un ordenamiento estándar — el tipo que hay detrás del método Array.sort() en JavaScript o del botón A→Z de una hoja de cálculo — compara dos líneas carácter por carácter, de izquierda a derecha, usando el punto de código Unicode de cada carácter. No interpreta una secuencia de dígitos como un número completo; solo pregunta si un carácter es menor o mayor que otro, una posición cada vez. Por eso una lista que contiene item1, item2, item9, item10 e item20 se ordena, carácter por carácter, como item1, item10, item2, item20, item9: al comparar "item10" e "item2" letra por letra, las cadenas son idénticas hasta "item", y el siguiente carácter lo decide todo — "1" frente a "2". Como el carácter "1" es menor que el carácter "2", item10 se ordena antes que item2, aunque diez sea numéricamente mayor que dos. Cualquier lista donde aparezcan números dentro de un texto sufre este problema: números de versión, nombres de archivo como image2.jpg e image10.jpg, números de factura e instrucciones paso a paso.
El orden natural — también llamado orden numérico — soluciona esto reconociendo una secuencia de dígitos consecutivos como un único número y comparando su valor en lugar de comparar los dígitos uno a uno. La opción de orden natural de esta herramienta delega esa lógica en la API Intl integrada en el navegador, ejecutando a.localeCompare(b, undefined, {numeric: true, sensitivity: "base"}) en cada par de líneas. El indicador numeric:true le dice a la comparación que detecte secuencias de dígitos y las trate como números, de modo que item2 quede correctamente antes que item10, e item9 antes que item20 — el orden que esperaría una persona que lee la lista, no el que produce una comparación carácter por carácter.
Comparación Sensible al Idioma, No Solo Códigos de Caracteres
El orden alfabético también depende de las reglas de qué idioma se apliquen, y aquí es donde una comparación simple falla incluso sin ningún número de por medio. En inglés, "a" y "A" son la misma letra en dos formas distintas, y las letras acentuadas como é normalmente se ordenan cerca de la e. El turco, sin embargo, trata "ı" (i sin punto) e "i" (i con punto) como dos letras distintas con posiciones propias en el alfabeto — una distinción que una comparación de puntos de código en bruto, que solo revisa valores numéricos Unicode, no tiene forma de conocer. localeCompare, el mismo método de Intl que hay detrás de la opción de orden natural, tiene en cuenta las reglas del idioma: con sensitivity: "base" trata las diferencias de mayúsculas/minúsculas y acentos como equivalentes a efectos de orden, respetando al mismo tiempo el orden real de las letras de cada alfabeto, ya sea inglés, turco, alemán u otro idioma de escritura latina.
Esta herramienta combina ambos aspectos en un solo paso: elija el orden alfabético A→Z o Z→A como base, añada opcionalmente el orden numérico natural por encima para que los números incrustados se comparen por valor y no por dígito, y luego elimine opcionalmente las líneas duplicadas, las líneas en blanco y los espacios al principio o al final. Como la detección de duplicados compara las líneas como cadenas exactas, recortar los espacios importa: "apple" y "apple " (con un espacio al final) parecen distintas para una comprobación de duplicados a menos que ese espacio se elimine antes, así que las opciones de recorte y de eliminación de duplicados están diseñadas para funcionar juntas y no como controles independientes.
Preguntas Frecuentes
¿Por qué "item10" aparece antes que "item2" al ordenar mi lista?
Porque un ordenamiento alfabético simple compara el texto carácter por carácter en lugar de tratar las secuencias de dígitos como números completos — el carácter "1" es menor que "2", así que item10 gana esa comparación en una sola posición aunque diez sea mayor que dos. Active el orden natural o numérico para solucionarlo: detecta dígitos consecutivos como un único número y compara la magnitud en lugar de los caracteres individuales.
¿Qué cuenta exactamente como una línea "duplicada"?
Dos líneas solo se consideran duplicadas si coinciden exactamente, carácter por carácter, incluidas las mayúsculas/minúsculas y cualquier espacio al principio o al final — "Apple" y "apple" se tratan como líneas distintas, igual que "banana" y "banana " con un espacio final. Active la opción de recorte antes de eliminar duplicados si quiere ignorar las diferencias de espacios en blanco.
¿Recortar los espacios en blanco cambia cuántos duplicados se eliminan?
Sí. Si dos líneas por lo demás idénticas solo difieren en espacios al principio o al final, se cuentan como líneas distintas hasta que se recortan. Marcar "recortar espacios al principio y al final" normaliza ambas líneas antes de que se ejecute la comprobación de duplicados, así que esas líneas casi idénticas se fusionan en una sola.
¿Es fiable localeCompare para ordenar texto que no está en inglés, como turco o alemán?
Sí — localeCompare es una función integrada del navegador diseñada específicamente para un ordenamiento correcto según el idioma, así que sabe que el turco trata la "i" con punto y la "ı" sin punto como letras distintas, y en general maneja los caracteres acentuados como esperaría un lector de ese idioma, algo que una simple comparación "menor que" basada en puntos de código Unicode en bruto no puede hacer.
¿Esta herramienta sube o almacena mi texto en algún sitio?
No — todo se ejecuta localmente en el navegador usando JavaScript; las líneas nunca se envían a un servidor, ni se registran ni se guardan. Actualizar o cerrar la pestaña borra por completo lo que haya escrito.
Herramientas Similares
Reportar un Problema
Ordenador de Líneas y Eliminador de Duplicados
Comentarios
Aún no hay comentarios — ¡sé el primero en escribir uno!