Confronto di testi riga per riga
Lo strumento di confronto mette a raffronto un testo originale e una versione modificata, presentando il risultato nell’ordine di lettura.
Esegui gratis nel browser
Ogni riga viene indicata come aggiunta, rimossa o invariata, con il relativo numero in ciascuna versione. Lei può così controllare modifiche, verificare file generati, convalidare variazioni di configurazione e capire con precisione che cosa distingue una versione dall’altra. Il confronto è deterministico, non accede alla rete e gestisce in modo uniforme i fine riga di Windows, Mac classico e Unix.
Prepari le due versioni per un confronto significativo
Inserisca la versione precedente nel campo del testo originale e quella successiva nel campo del testo modificato. Lo strumento confronta righe intere, quindi punteggiatura, maiuscole, spazi e qualsiasi altro carattere sono rilevanti. Una riga in cui cambia un solo carattere viene rappresentata come una rimozione seguita da un’aggiunta. Questo comportamento mantiene il risultato fedele a una revisione per righe, senza suggerire che due righe differenti siano rimaste invariate. Prima del confronto vengono normalizzati i fine riga: in questo modo è possibile confrontare contenuti copiati da Windows, Unix o vecchi sistemi Mac senza falsi scostamenti dovuti soltanto alle convenzioni del ritorno a capo. Le righe vuote all’interno di un documento restano significative e possono risultare aggiunte, rimosse o invariate. Se un documento termina con un ritorno a capo, anche la riga vuota finale entra nel confronto. Per una revisione più chiara, eviti di modificare la formattazione non pertinente insieme ai contenuti sostanziali, perché una riformattazione estesa produce naturalmente più differenze anche quando le idee di fondo restano simili.
Legga gli stati, i numeri di riga e il riepilogo
Il risultato segue l’ordine necessario per ricostruire il passaggio dalla versione originale a quella modificata. Una voce invariata include sia il vecchio sia il nuovo numero di riga, perché quella stessa riga esiste in entrambi i testi. Una voce rimossa riporta soltanto il numero precedente, mentre una aggiunta mostra solo quello nuovo. L’assenza degli altri campi è intenzionale: una riga aggiunta non ha posizione nel vecchio documento e una rimossa non ne ha nel nuovo. I conteggi del riepilogo misurano rapidamente l’entità della modifica, mentre l’elenco dettagliato documenta l’origine di ciascun totale. L’indicatore di identicità è vero solo quando non vi sono aggiunte né rimozioni. Le righe ripetute possono ammettere più allineamenti matematicamente validi. Per mantenere stabile il risultato, lo strumento applica una regola fissa di spareggio e preferisce una rimozione quando due allineamenti conservano lo stesso numero di righe invariate. Gli stessi input producono quindi sempre la stessa sequenza, adatta a test e procedure di revisione automatizzate.
Usi le differenze in modo sicuro nelle revisioni e automazioni
Il confronto per righe è particolarmente utile quando la struttura è importante: file sorgente, configurazioni, note di rilascio, elenchi, regolamenti, istruzioni e registri esportati sono esempi comuni. In una revisione manuale, inizi dal riepilogo e poi esamini nel contesto ogni coppia di rimozione e aggiunta. In un’automazione, controlli l’indicatore di identicità per una decisione rapida e conservi i dettagli quando serve una traccia di audit o una relazione esplicativa. Lo strumento non stabilisce se una modifica sia corretta, non unisce cambiamenti concorrenti e non calcola somiglianze semantiche. Mostra rapporti testuali esatti affinché una persona o un’altra regola deterministica possa decidere. Entrambi gli input sono limitati per assicurare un’esecuzione prevedibile e il confronto avviene interamente in memoria, senza servizi esterni. Ogni utilizzo API costa $0.002. Se elabora molti file, li confronti una coppia alla volta e conservi nomi o identificatori di versione nel proprio flusso, perché questa capacità riceve testo e non metadati del repository. Per materiale sensibile, rispetti i requisiti di conservazione e trasporto del canale scelto.
Casi d'uso
Controllare modifiche di configurazione
Confronti la configurazione precedente con quella proposta per vedere ogni riga esatta inserita o rimossa dall’aggiornamento.
Convalidare un risultato generato
Verifichi un manifesto, un rapporto o un frammento di codice appena prodotto rispetto a una versione attesa in un flusso automatizzato.
Spiegare revisioni documentali
Crei un registro strutturato delle modifiche per regolamenti, note di rilascio, istruzioni o altri documenti organizzati per righe.
Domande frequenti
Che cosa significa ogni stato?
Invariata indica che la riga esatta compare nell’allineamento scelto di entrambe le versioni. Rimossa significa che esiste solo nell’originale e aggiunta che esiste solo nella revisione.
Vengono confrontate le parole all’interno di una riga modificata?
No. Il confronto avviene intenzionalmente per righe. Una riga modificata appare come rimozione e aggiunta, mantenendo una registrazione esatta e inequivocabile.
Formati di fine riga diversi vengono considerati modifiche?
No. I fine riga di Windows, Unix e Mac classico vengono normalizzati prima del confronto.
Come vengono allineate le righe identiche ripetute?
L’algoritmo conserva una sequenza comune di righe di lunghezza massima e applica uno spareggio stabile che preferisce la rimozione tra allineamenti equivalenti.
Posso usare il risultato nei test automatizzati?
Sì. L’algoritmo non usa rete, casualità o valori dipendenti dal tempo, quindi input identici producono sempre lo stesso JSON.
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002. La versione per browser può eseguire localmente lo stesso confronto deterministico.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/str/diff-lines \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"before_text":"Apples\nBananas\nCherries","after_text":"Apples\nBlueberries\nCherries"}'const res = await fetch("https://api.kit.forhosting.com/str/diff-lines", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"before_text": "Apples\nBananas\nCherries",
"after_text": "Apples\nBlueberries\nCherries"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/diff-lines",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"before_text": "Apples\nBananas\nCherries",
"after_text": "Apples\nBlueberries\nCherries"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/diff-lines", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"before_text":"Apples\\nBananas\\nCherries","after_text":"Apples\\nBlueberries\\nCherries"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"before_text":"Apples\nBananas\nCherries","after_text":"Apples\nBlueberries\nCherries"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/diff-lines", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"before_text": "Apples\nBananas\nCherries",
"after_text": "Apples\nBlueberries\nCherries"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.diff_lines",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_chars_per_text | 200000 |
max_lines_per_text | 1000 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |