PK Systems PK Systems
Strumenti di testo

Diff di testo

Confronta due frammenti di testo e vedi cosa è cambiato. Granularità per riga o per parola, anteprima live, gira interamente nel tuo browser.

Diff di testo

Diff


    

Cos'è un diff di testo?

Un diff (abbreviazione di differenza) è un report fianco a fianco di cosa è cambiato tra due frammenti di testo. L'uso classico è nel controllo versione — Git, SVN e simili usano i diff per mostrare cosa ha modificato ogni commit — ma la stessa idea è utile per rivedere bozze, confrontare contratti legali, individuare piccole modifiche nei file di configurazione o verificare che un documento sia sopravvissuto intatto a un copia-incolla. Questo strumento calcola il diff usando un algoritmo a sottosequenza comune più lunga, la stessa famiglia di tecniche che alimentano git diff.

Come usare questo strumento

Incolla la versione originale in A e quella modificata in B. Il diff appare live qui sotto: le righe (o parole) verdi sono aggiunte in B, quelle rosse sono rimozioni da A, le righe normali sono invariate. Cambia tra granularità per riga e per parola a seconda di cosa vuoi vedere — il diff per riga è perfetto per codice o testo strutturato, quello per parola è più leggibile per la prosa, in cui contano le piccole modifiche di formulazione. Le statistiche sopra l'output mostrano il numero di token aggiunti, rimossi e invariati.

Quando usare diff per riga o per parola

Il diff per riga è la scelta predefinita giusta per codice, JSON, CSV, file di log e qualsiasi cosa la cui struttura viva a livello di riga. Una modifica di un singolo carattere appare come una riga rimossa e una aggiunta — facile da scorrere e coerente con quello che fanno i tool di controllo versione. Il diff per parola brilla per la prosa: evidenzia le parole effettivamente cambiate all'interno di un paragrafo, così vedi le modifiche senza rileggere tutto. Evita il diff per parola su documenti molto lunghi — il calcolo LCS diventa quadratico e inizia a sentirsi lento sopra qualche migliaio di parole.

Domande frequenti

Il mio testo viene caricato da qualche parte?
No. L'intero diff viene calcolato nel tuo browser. Puoi verificarlo aprendo DevTools > Network e incollando i tuoi testi — non parte alcuna richiesta. Questo rende lo strumento sicuro per fare diff di contenuti privati o sensibili come contratti, codice o file di configurazione.
Come funziona l'algoritmo di diff?
Costruisce una tabella di sottosequenza comune più lunga (LCS) tra gli input tokenizzati, poi la percorre all'indietro per produrre uno script di modifica — la stessa tecnica introdotta da Hunt-McIlroy e usata dal classico diff. Per input molto grandi (oltre ~2.000 token su ciascun lato) lo strumento ricade su un confronto naïve posizione per posizione, più veloce ma meno ottimo.
Perché a volte il risultato sembra sbagliato?
LCS sceglie la sottosequenza comune più lunga, che è matematicamente ottima ma può produrre risultati visivamente sorprendenti quando ci sono molti token brevi ripetuti (tante righe vuote, parole ripetute). Se vedi raggruppamenti strani, passa all'altra granularità — i diff per riga e per parola a volte spezzano i pareggi diversamente, e uno dei due di solito corrisponde meglio al tuo modello mentale.
E gli spazi?
Gli spazi sono significativi. Spazi finali, modifiche di indentazione e CRLF vs LF compaiono tutti come differenze. Se ti interessano solo le modifiche reali, normalizza entrambi i testi (rimuovi gli spazi finali, converti tab/spazi, uniforma i fine riga) prima di incollarli.
Posso esportare il diff?
Non ancora come patch in formato unified — questo strumento si concentra sul confronto visivo fianco a fianco. Per esportare una patch in formato unified, lancia diff -u a.txt b.txt dalla riga di comando, oppure usa git diff --no-index a.txt b.txt per un output più ricco simile a quello mostrato da GitHub.
Perché i fine riga vengono a volte segnalati come modifiche?
Sistemi operativi diversi usano convenzioni diverse per i fine riga: Windows tradizionalmente usa \r\n (CRLF), Unix e macOS usano \n (LF). Quando il testo viene copiato tra sistemi, i fine riga possono mescolarsi e il diff tratterà line\r e line come distinti. Fai passare il testo da uno strumento come dos2unix o incollalo in un editor di testo semplice che normalizza i fine riga prima di confrontare.