Saltar al contenido
Quaestio

Comparar textos

Pega el original y la versión modificada para ver resaltada cada diferencia, hasta la palabra.

Pega texto en ambos campos para compararlos.

Insertar

Inserta esta herramienta en tu sitio

Copia el código y pégalo donde quieras que aparezca la herramienta, por ejemplo en una entrada de blog o en la página de una escuela. Es gratis, el recuadro no tiene anuncios y la herramienta calcula en el navegador de quien la usa.

Cómo funciona

La comparación busca la secuencia más corta de líneas agregadas y eliminadas que convierte un texto en el otro, con el algoritmo de Eugene Myers de 1986. Es el mismo método que git usa de forma predeterminada. Después, las líneas cambiadas se comparan palabra por palabra para que veas exactamente qué difiere.

Las líneas agregadas tienen fondo verde y las eliminadas, fondo rojo. Una línea cambiada cuenta como una eliminada y una agregada, igual que en otras herramientas de diff.

Ignorar mayúsculas y minúsculas trata Hola y hola como iguales. Ignorar espacios no tiene en cuenta los espacios al principio y al final de la línea ni los espacios repetidos, lo que ayuda cuando cambió la sangría.

El diff unificado (unified diff) es el formato de texto que produce diff -u, con tres líneas de contexto alrededor de cada cambio. Se puede pegar en un reporte de errores o pasar a patch y git apply.

Tus textos nunca salen de tu navegador. Los textos muy largos que difieren casi por completo no se comparan línea por línea; en ese caso, todas las líneas se muestran como cambiadas.

Cómo compara la herramienta

Primero se apartan las líneas iguales del principio y del final. Entre ellas, el algoritmo de Myers busca la secuencia más corta de líneas eliminadas y agregadas. Antes, los finales de línea CR LF o CR solo se convierten en LF, así que el mismo texto desde Windows y desde una Mac cuenta como igual. Dentro de un cambio, las líneas eliminadas van antes que las agregadas y se emparejan en orden para compararlas palabra por palabra. Las palabras se separan en los espacios y en los signos de puntuación, así que una coma cambiada se marca sola.

Ejemplo paso a paso

Compara las líneas manzana, plátano, cereza con manzana, plátano macho, cereza, dátil, ambas con salto de línea al final. El algoritmo conserva manzana y cereza, elimina plátano y agrega plátano macho y dátil: dos líneas agregadas y una eliminada. La línea plátano macho se empareja con plátano, y solo la palabra macho, con el espacio que la precede, se marca como nueva. En diff unificado esto es un solo bloque con el encabezado @@ -1,3 +1,4 @@: empieza en la línea 1 de los dos textos y abarca tres líneas del viejo y cuatro del nuevo.

Sin salto de línea al final, el resultado cambia. Según GNU Diffutils, una última línea sin salto de línea no coincide con la misma línea con salto, y cereza era la última línea solo en el texto viejo. La herramienta muestra entonces cereza como eliminada y agregada, tres líneas agregadas y dos eliminadas, y escribe \ No newline at end of file después de la última línea de cada texto, como hace diff -u. Lado a lado y en una columna, la línea eliminada cereza lleva la marca “sin salto de línea al final”, porque de otro modo se vería igual. Ignorar espacios no toma en cuenta esa diferencia.

Límites

El trabajo tiene un tope de 4000 cambios a nivel de líneas. Dos textos de 2001 líneas completamente distintas cada uno superan el límite, y entonces todas las líneas se muestran como eliminadas y agregadas, sin comparar. A nivel de palabras el tope es de 2000 cambios por par de líneas, y si ha cambiado más del 80 % de los caracteres, la línea se muestra entera, sin marcar palabras.

Lo que no se ve

Los bloques movidos no se reconocen. Si en un texto de cinco líneas mueves las dos primeras justo antes de la última, la herramienta muestra dos líneas eliminadas y dos agregadas. Ignorar espacios junta los espacios dentro de una línea, pero no los quita: a,b y a, b siguen contando como distintas.

Fuentes

Cómo se verifican las herramientas