Normalizzare i fine riga
Normalizzi i fine riga quando un file, un testo incollato, un documento generato o un frammento di codice combina LF Unix, CRLF Windows e CR isolati legacy.
Esegui gratis nel browser
Lei sceglie LF o CRLF come destinazione; il risultato conserva ogni carattere visibile e rende coerenti tutti i confini di riga. La risposta contiene il testo normalizzato, la destinazione selezionata e il numero esatto di terminatori convertiti, così l’operazione è verificabile e semplice da automatizzare.
Perché i fine riga uniformi sono importanti
Un testo può apparire identico in un editor pur contenendo sequenze di byte diverse tra le righe. Unix e macOS moderno usano normalmente un singolo avanzamento riga, LF, mentre Windows impiega spesso un ritorno carrello seguito da un avanzamento riga, CRLF. I file meno recenti possono contenere anche CR isolati. Le combinazioni nascono copiando tra applicazioni, unendo contenuti generati e manuali, estraendo archivi o accettando contributi da sistemi diversi. Possono creare differenze inutili nel controllo versione, confondere gli strumenti da riga di comando, bloccare importatori rigorosi e cambiare checksum anche se le parole visibili coincidono. Questa capacità riconosce CRLF come un solo terminatore, oltre a LF e CR isolati, e converte tutte e tre le forme nello stile richiesto. Non modifica lettere, spazi, tabulazioni o altri caratteri.
Come funzionano conversione e conteggio
Inserisca il testo completo nel campo text e selezioni esattamente LF o CRLF in target. Il convertitore scorre il contenuto dall’inizio alla fine e riconosce ogni coppia CRLF prima dei caratteri isolati, evitando di contare due volte un fine riga Windows. Con destinazione LF, ogni CRLF e ogni CR isolato valgono una modifica, mentre un LF esistente resta invariato. Con CRLF cambiano LF e CR isolati, ma le coppie CRLF esistenti rimangono uguali. changed conta i terminatori convertiti, non i caratteri inseriti o rimossi. Sostituire CRLF con LF equivale a una modifica anche se l’output è più corto. Un testo senza terminatori, già conforme o vuoto torna invariato con zero. L’operazione è deterministica: input identici producono sempre output identici.
Usare il risultato in sicurezza
Usi direttamente il testo restituito come valore canonico per scrivere un file, calcolare un hash, confrontare revisioni, alimentare un parser o richiamare un’altra capacità. Conservi changed nei registri di migrazione quando serve una prova: zero conferma che l’input era già conforme, mentre un valore positivo indica quanti confini sono stati riscritti. Il risultato ripete target, evitando dipendenze da configurazioni esterne. Lo strumento non deduce la convenzione dal nome del file o dal sistema operativo, perché le supposizioni silenziose rendono difficili gli audit. Scelga LF per repository e processi Unix che lo prevedono, oppure CRLF per software e formati Windows. Una destinazione non supportata genera un errore. La normalizzazione non elimina spazi finali, modifica tabulazioni, aggiunge una nuova riga conclusiva, cambia codifica o riscrive forme Unicode.
Casi d'uso
Pulire il codice prima del commit
Converta terminatori misti secondo la convenzione del repository, evitando che una piccola modifica sembri riscrivere l’intero file.
Preparare testo per un importatore rigoroso
Produca record con terminatori coerenti prima di inviarli a software che accetta esclusivamente LF o CRLF.
Canonizzare contenuti prima dell’hash
Uniformi i confini di riga prima del checksum affinché il sistema operativo non cambi il digest.
Domande frequenti
Quali stili di fine riga posso scegliere?
Le destinazioni supportate sono LF e CRLF. Qualsiasi altro valore produce un errore di input non valido.
Una coppia CRLF conta come una o due modifiche?
Conta come un solo fine riga e al massimo una modifica. La coppia viene riconosciuta prima dei caratteri isolati.
La normalizzazione aggiunge una nuova riga finale?
No. Converte solo i terminatori esistenti e non aggiunge né rimuove il confine finale.
Che cosa accade ai caratteri CR isolati?
Ogni CR isolato viene trattato come un fine riga legacy e convertito nello stile selezionato.
Quanto costa una richiesta API?
Ogni richiesta API costa $0.002. La stessa conversione deterministica può essere eseguita anche nel browser.
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/data/normalize-line-endings \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"first line\r\nsecond line\nthird line\rfourth line","target":"LF"}'const res = await fetch("https://api.kit.forhosting.com/data/normalize-line-endings", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "first line\r\nsecond line\nthird line\rfourth line",
"target": "LF"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/normalize-line-endings",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "first line\r\nsecond line\nthird line\rfourth line",
"target": "LF"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/normalize-line-endings", 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\\nthird line\\rfourth line","target":"LF"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"first line\r\nsecond line\nthird line\rfourth line","target":"LF"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/normalize-line-endings", 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\nthird line\rfourth line",
"target": "LF"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.normalize_line_endings",
"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_mb | 25 |
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. |