Confronto Testi (Diff Checker)

Incolla due testi e scopri esattamente quali righe sono state aggiunte, rimosse o lasciate invariate — un diff riga per riga, chiaro, direttamente nel browser.

1.154 visualizzazioni

Come Funziona il Confronto

Lo strumento divide entrambi i testi in righe ed esegue un algoritmo di Sottosequenza Comune Più Lunga (LCS) — la stessa logica di base che Git e gli editor di codice usano per la loro vista "diff". Invece di confrontare le righe in base alla posizione (riga 1 con riga 1, riga 2 con riga 2), l'algoritmo LCS trova la sequenza di righe più lunga che compare, nello stesso ordine, in entrambi i documenti. Tutto ciò che rientra in quella sequenza condivisa viene contrassegnato come invariato; ciò che resta nell'originale viene contrassegnato come rimosso, e ciò che resta nel testo rivisto viene contrassegnato come aggiunto.

Questa distinzione conta perché un confronto ingenuo basato sulla posizione si rompe nel momento in cui una singola riga viene inserita o eliminata vicino all'inizio di un documento — ogni riga successiva sembrerebbe diversa, anche se in realtà non è cambiato nulla tranne quella riga. Esempio concreto: se l'originale recita "A / B / C / D" e il testo rivisto recita "A / X / B / C / D", un semplice confronto riga per riga segnalerebbe B, C e D come tutti modificati, poiché ciascuno si è spostato di una posizione. L'algoritmo LCS invece riconosce che A, B, C e D compaiono ancora nello stesso ordine relativo in entrambi i testi, quindi segnala correttamente una sola aggiunta — la nuova riga X — e contrassegna il resto come invariato.

Cosa Sapere

  • Basato su righe, non su parole: il confronto opera su righe intere. Cambiare una singola parola all'interno di una riga lunga contrassegna comunque quell'intera riga come una rimossa più una aggiunta — la convenzione standard nel confronto di codice e documenti, poiché mantiene il risultato facile da scorrere.
  • Spazi e maiuscole/minuscole contano: uno spazio finale o una lettera con maiuscola diversa fa registrare due righe altrimenti identiche come diverse — vale la pena normalizzare prima il testo se non è questo il confronto che desideri.
  • Il contenuto riordinato viene abbinato correttamente: poiché l'algoritmo LCS cerca la sequenza comune più lunga anziché le posizioni esatte, un paragrafo che si è spostato altrove ma ha mantenuto il proprio ordine interno delle righe viene riconosciuto come invariato anziché come una coppia elimina-poi-aggiungi.
  • I documenti grandi non sono un problema: l'algoritmo gestisce comodamente migliaia di righe; file estremamente grandi (decine di migliaia di righe) potrebbero far impiegare al browser un momento in più per l'allineamento, ma nulla viene mai caricato — il calcolo resta sempre locale.

La stessa tecnica sta alla base della revisione in stile "controllo modifiche" anche al di fuori della programmazione: un team legale che confronta due bozze di una clausola contrattuale, un editor che verifica esattamente cosa ha riscritto un co-autore in un capitolo, o un traduttore che conferma quali frasi sono cambiate tra due versioni localizzate di uno stesso documento. Poiché l'algoritmo si occupa solo della sequenza delle righe, non del loro significato, funziona altrettanto bene su codice sorgente, file di configurazione, poesie o un foglio di calcolo esportato come testo semplice.

Domande Frequenti

Confronta parola per parola o riga per riga?

Riga per riga — lo standard per documenti e codice, poiché corrisponde al modo in cui la maggior parte degli editor e degli strumenti di controllo versione interpreta già un file. Una riga modificata appare quindi come una riga rimossa più una aggiunta, anziché un groviglio di evidenziazioni a livello di parola, il che mantiene il risultato facile da scorrere anche nei documenti lunghi.

C'è un limite di dimensione?

L'algoritmo gestisce comodamente migliaia di righe, il che copre la stragrande maggioranza di contratti, articoli e file sorgente. Per file molto grandi (decine di migliaia di righe), il browser potrebbe impiegare un momento in più per calcolare l'allineamento — il lavoro resta comunque interamente sul tuo dispositivo, quindi non c'è alcun ritardo di caricamento da attendere.

I miei documenti vengono caricati da qualche parte?

No. Entrambi i testi vengono confrontati localmente nel tuo browser tramite JavaScript, e sia l'input che il risultato scompaiono nel momento in cui chiudi o aggiorni la pagina — nulla viene salvato o trasmesso.

Come vengono gestite le righe spostate o riordinate?

Poiché l'algoritmo LCS abbina la sequenza più lunga comune a entrambi i testi indipendentemente dalla posizione, un paragrafo che si è spostato ma ha mantenuto il proprio ordine interno delle righe risulta comunque invariato anziché una falsa coppia elimina-e-aggiungi. Vengono segnalate solo le righe che differiscono realmente per contenuto o posizione relativa.

Perché cambiare una parola mostra due righe come modificate?

Il diff confronta righe intere, non singole parole. Modificare una parola all'interno di una riga fa sì che l'intera riga conti come una riga rimossa (la versione precedente) più una riga aggiunta (la nuova versione) — lo stesso comportamento che si osserva in Git o negli strumenti di revisione del codice, che mantiene il risultato visivo coerente indipendentemente da quanto piccola sia stata la modifica all'interno della riga.

Commenti

Ancora nessun commento — scrivi il primo!

Strumenti Simili