Rilevi le terminazioni di riga: LF, CRLF o miste
Scopra quali fine riga usa davvero un file: alpha, beta e gamma terminate da CRLF danno lo stile CRLF con 3 interruzioni e 0 LF isolati, e basta una sola interruzione diversa per segnare il file come misto. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Testo
- alpha beta gamma
- Totale
- 3
- Stile
- CRLF
Esamini il testo grezzo di un file e ne identifichi la convenzione di fine riga senza modificarne il contenuto. Il rilevatore conta i caratteri LF isolati e le coppie CRLF tipiche di Windows, quindi indica se il file usa LF, CRLF oppure entrambi. È deterministico, indipendente dal linguaggio e adatto a codice sorgente, configurazioni, log, esportazioni e testo generato. Se non trova terminazioni riconosciute, restituisce un chiaro errore di input anziché formulare un’ipotesi infondata, offrendo un risultato affidabile per la validazione e l’automazione.
Fornisca il testo grezzo esattamente come appare
Invii l’intero contenuto del file nel campo text. Le terminazioni di riga sono invisibili nella maggior parte degli editor, quindi la copia da un’applicazione che normalizza automaticamente i caratteri può cambiare ciò che il rilevatore riceve. Per un risultato affidabile, legga il file come testo preservando i caratteri originali e trasmetta direttamente la stringa.
Non servono nome del file, linguaggio, etichetta di codifica o indicazione del sistema operativo, perché la capacità esamina i caratteri stessi. Una terminazione Windows è la sequenza di due caratteri ritorno carrello e avanzamento riga, denominata CRLF. Una terminazione in stile Unix è un avanzamento riga isolato, denominato LF.
Lo scanner considera ogni coppia CRLF come una sola terminazione e non conta di nuovo il carattere LF interno. Conta anche una terminazione finale, se presente, perché appartiene al file fornito. Stringhe vuote o testi di una sola riga senza LF né CRLF restituiscono un errore: non esiste alcuna convenzione rilevabile.
Interpreti lo stile e i conteggi
La risposta contiene style, un oggetto di conteggio e il totale delle terminazioni riconosciute. L’oggetto separa lf da crlf, rendendo espliciti i dati su cui si basa la classificazione. Se compare almeno un LF e nessuna coppia CRLF, lo stile è LF.
Se compare almeno una coppia CRLF e nessun LF isolato, lo stile è CRLF. Quando entrambi i contatori sono maggiori di zero, lo stile è misto, anche se una convenzione prevale nettamente. Questa definizione rigorosa è intenzionale: una sola terminazione incoerente può influire su formattatori, patch, linter, snapshot e regole dei repository, mentre una semplice maggioranza nasconderebbe un’informazione utile.
Il totale è la somma dei due contatori e può servire come controllo o denominatore per una percentuale. I conteggi descrivono sequenze di terminazione, non righe logiche; in base alla presenza della terminazione finale, il file può avere una riga logica in più rispetto al totale.
Rilevi prima di normalizzare o convalidare
Il rilevamento è particolarmente utile prima che un altro strumento riscriva il file. Un controllo pre-commit può rifiutare terminazioni miste, uno script di migrazione può scegliere la regola di normalizzazione e una pipeline può spiegare perché un artefatto cambia tra sistemi operativi. Il rilevatore riferisce soltanto ciò che trova: non converte CRLF in LF, non aggiunge una terminazione finale, non modifica contenuti, non apre repository e non scrive file.
Questo ambito ristretto mantiene il risultato riproducibile e consente a Lei di scegliere la politica adatta. Un progetto multipiattaforma può accettare entrambi gli stili se coerenti, mentre un pacchetto Linux può richiedere esclusivamente LF. Se la sorgente può contenere vecchi ritorni carrello isolati, li converta o li convalidi separatamente.
Casi d'uso
Applichi una regola di fine riga al repository
Controlli codice e configurazioni per LF, CRLF o terminazioni miste prima di accettare una modifica generata.
Diagnostichi differenze superflue nei file
Verifichi se terminazioni incoerenti fanno apparire modificato lo stesso contenuto tra sistemi operativi.
Convalidi le esportazioni generate
Conti le terminazioni delle righe e confermi che il produttore abbia adottato una convenzione uniforme.
Domande frequenti
Quanto costa un rilevamento?
Nel browser può eseguire localmente la stessa logica deterministica.
Come viene conteggiato CRLF?
Ogni coppia ritorno carrello e avanzamento riga conta come una terminazione CRLF, senza ricontare il suo LF.
Quando un file viene indicato come misto?
Lo stile è misto quando l’input contiene almeno un LF isolato e almeno una coppia CRLF.
Questo strumento modifica o normalizza il testo?
No. Esamina soltanto la stringa e restituisce i conteggi; non modifica né restituisce un file riscritto.
Perché un testo senza interruzioni di riga dà errore?
Un testo vuoto o di una sola riga non ha alcuno stile di fine riga da rilevare, quindi riceve un messaggio chiaro invece di un’ipotesi. Incolli il file intero con le interruzioni originali, compresa l’ultima, per avere una risposta affidabile.
Strumenti correlati
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/dev2/line-ending-detect \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"first line\r\nsecond line\r\nthird line\r\n"}'const res = await fetch("https://api.kit.forhosting.com/dev2/line-ending-detect", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "first line\r\nsecond line\r\nthird line\r\n"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/line-ending-detect",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "first line\r\nsecond line\r\nthird line\r\n"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/line-ending-detect", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"first line\\r\\nsecond line\\r\\nthird line\\r\\n"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"first line\r\nsecond line\r\nthird line\r\n"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/line-ending-detect", 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
{
"text": "first line\r\nsecond line\r\nthird line\r\n"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.line_ending_detect",
"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.
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. |
Note tecniche
Rilevi prima di normalizzare o convalidare
L’implementazione esegue una sola scansione deterministica con contatori di dimensione costante, quindi testi identici restituiscono sempre lo stesso JSON senza dipendere da rete, impostazioni locali, orologi o valori predefiniti del sistema.
Domande tecniche
Che cosa accade con un file di una sola riga?
Se non contiene LF né CRLF, la capacità restituisce invalid_input perché non può rilevare una convenzione.