Confronti due testi riga per riga
Confronti due versioni di un testo senza controllare manualmente ogni riga. Questo strumento deterministico allinea le righe uguali nel loro ordine originale e classifica ogni risultato come aggiunto, rimosso o invariato.
Esegui gratis nel browser
È adatto a file di configurazione, registri, elenchi, bozze e output generati nei quali le interruzioni di riga sono significative. La risposta strutturata contiene le posizioni disponibili e un riepilogo compatto, comodi sia per la revisione umana sia per l’elaborazione automatizzata.
Prepari le due versioni per un confronto significativo
Inserisca la versione di riferimento nel campo original e quella da esaminare in revised. Il confronto considera ogni interruzione di riga un confine significativo, quindi conservi la formattazione importante. Se una frase viene spostata su un’altra riga, sarà indicata come rimozione e aggiunta anche se le parole non cambiano. Le terminazioni di riga di Windows e dei vecchi Mac vengono normalizzate prima del confronto, evitando differenze dovute soltanto al sistema operativo. Spazi, maiuscole, punteggiatura e righe vuote restano invece significativi. Questa precisione è utile per configurazioni, rapporti generati e inventari. Una versione può essere vuota per mostrare che tutte le righe sono state inserite o eliminate; se entrambe sono vuote, la richiesta restituisce un errore. Invii direttamente stringhe, non array o oggetti. Il servizio non riscrive, tronca né interpreta il contenuto prima di calcolare l’allineamento.
Legga il risultato ordinato riga per riga
La risposta contiene un array lines ordinato e un riepilogo. Ogni elemento presenta uno stato e il testo esatto della riga. Un elemento invariato include original_line e revised_line perché esiste in entrambe le versioni. Una rimozione contiene solo original_line, mentre un’aggiunta contiene soltanto revised_line. Queste posizioni iniziano da uno e corrispondono al testo sorgente, quindi possono essere mostrate direttamente in un’interfaccia di revisione. Quando una riga viene sostituita, il risultato contiene normalmente una rimozione e un’aggiunta; non esiste uno stato separato per le sostituzioni. Il riepilogo conta righe aggiunte, rimosse e invariate. L’allineamento usa una sottosequenza comune più lunga, conserva l’ordine ed evita che un piccolo inserimento faccia apparire diverso tutto il documento. Righe identiche ripetute possono consentire più allineamenti validi; una regola stabile che privilegia la rimozione risolve le parità e produce sempre lo stesso JSON.
Usi differenze strutturate nelle revisioni e automazioni
Il confronto per righe è particolarmente utile quando un altro sistema deve agire sul risultato. Un flusso di distribuzione può confrontare la configurazione prevista con quella osservata, bloccare una pubblicazione quando vengono rimossi parametri protetti e conservare il risultato come prova. Un sistema editoriale può evidenziare solo aggiunte e rimozioni, mantenendo le righe intatte come contesto. Un monitor può confrontare istantanee consecutive, controllare prima il riepilogo ed evitare notifiche se tutto resta uguale. La capacità è deterministica, non usa rete né modelli linguistici e non parafrasa mai il contenuto. Ogni richiesta API costa $0.002; la pagina esegue nel browser la stessa logica pura. È volutamente un confronto per righe, non una revisione semantica: non spiega le ragioni, non ignora gli spazi e non confronta le singole parole di una riga modificata. Scelga interruzioni significative e usi posizioni e stati per evidenziare, verificare, collaudare o inviare avvisi.
Casi d'uso
Verificare modifiche di configurazione
Confronti una configurazione proposta con quella distribuita e mostri esattamente le righe inserite o rimosse.
Controllare un output generato
Confronti un rapporto recente con un risultato noto e usi il riepilogo per rilevare cambiamenti inattesi.
Creare una revisione editoriale
Trasformi due bozze organizzate per righe in elementi strutturati che un’interfaccia possa evidenziare con posizioni affidabili.
Domande frequenti
Che cosa restituisce il confronto?
Restituisce un array ordinato di righe aggiunte, rimosse e invariate, oltre al conteggio di ogni stato.
Come vengono rappresentate le righe modificate?
Una modifica viene rappresentata rimuovendo la vecchia riga e aggiungendo quella nuova.
Gli spazi sono rilevanti?
Sì. Spazi e righe vuote vengono conservati e confrontati, mentre le terminazioni con ritorno a capo vengono normalizzate.
Un input può essere vuoto?
Sì. Il testo non vuoto risulterà interamente aggiunto o rimosso. Solo due input vuoti producono un errore.
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002. Lo strumento nel browser esegue 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/text/diff-lines \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"original":"alpha\nbeta\ngamma","revised":"alpha\nbeta updated\ngamma"}'const res = await fetch("https://api.kit.forhosting.com/text/diff-lines", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"original": "alpha\nbeta\ngamma",
"revised": "alpha\nbeta updated\ngamma"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/diff-lines",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"original": "alpha\nbeta\ngamma",
"revised": "alpha\nbeta updated\ngamma"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/diff-lines", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"original":"alpha\\nbeta\\ngamma","revised":"alpha\\nbeta updated\\ngamma"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"original":"alpha\nbeta\ngamma","revised":"alpha\nbeta updated\ngamma"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/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
{
"original": "alpha\nbeta\ngamma",
"revised": "alpha\nbeta updated\ngamma"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.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_tokens | 20000 |
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. |