Rimuovere righe vuote in alto e in basso
Incolli un blocco con due righe vuote sopra e due sotto: quelle quattro spariscono e le tre righe centrali restano intatte, con spazi e rientri. Ai bordi, una riga con soli spazi o tabulazioni conta come vuota. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Testo
- Hello world Keep this spacing
- Input
- Hello world Keep this spacing
- Testo
- Hello world Keep this spacing
- Numero di righe
- 3
- Righe
- Hello world , , Keep this spacing
I frammenti incollati e i documenti esportati arrivano spesso con un alone di righe vuote in cima e in fondo che nessuno ha chiesto. Questo strumento rimuove solo quelle righe vuote ai bordi e nient’altro: i paragrafi interni, lo spazio extra lasciato tra le sezioni e il riempimento di una riga con contenuto restano esattamente come sono. Invii qualsiasi stringa—una bozza di posta, un file Markdown, un dump di registro o un tema—e il motore normalizza le terminazioni di riga di Windows e del vecchio Mac, avanza da entrambe le estremità fino a una riga con testo visibile e restituisce il blocco restante. Le righe fatte solo di spazi contano come vuote, così una fila di spazi o una tabulazione isolata all’inizio di un incolla viene scartata come una riga davvero vuota.
Che cosa significa togliere le righe vuote ai bordi e perché non è String.trim
La maggior parte degli editor offre un trim di stringa intera che pela gli spazi solo dal primo e dall’ultimo carattere di un buffer. È lo strumento sbagliato quando il disordine che conta sono righe vuote impilate sopra un titolo o dopo una firma, mentre il corpo ha ancora bisogno dei vuoti di paragrafo e delle citazioni rientrate.
Questa capacità percorre l’elenco delle righe, non quello dei caratteri: dopo la normalizzazione delle terminazioni Windows CRLF e del CR legacy in LF, il testo viene diviso su LF; il cammino parte dall’indice zero e avanza finché ogni riga è vuota o contiene solo spazi Unicode, e un cammino gemello parte dall’ultimo indice e arretra.
La prima e l’ultima riga che hanno ancora caratteri visibili diventano i nuovi bordi; tutto ciò che sta in mezzo viene copiato invariato, compresi i separatori vuoti che si voleva conservare e gli spazi che vivono dentro una frase. Una riga fatta solo di spazi o tabulazioni è trattata come vuota ai bordi, perché così appaiono di solito i registri di chat incollati e i documenti Word esportati.
Una riga che ha ancora una lettera, una cifra o un segno di punteggiatura è contenuto anche con rientro iniziale, così i campioni di codice e gli elenchi nidificati conservano il riempimento della prima colonna. L’algoritmo non fonde mai due righe vuote interne in una, non unisce mai i paragrafi e non ritaglia mai la sinistra né la destra di una riga con contenuto. Quel contratto è ciò che si cerca digitando togliere righe vuote inizio e fine, non ritagliare ogni riga né collassare tutto lo spazio.
Suggerimenti pratici, limiti e ricerche correlate
Usi questa capacità quando l’intento di ricerca è togliere le righe vuote dall’inizio e dalla fine, rimuovere le file vuote di testa e di coda, oppure riordinare un frammento incollato senza toccare la spaziatura interna. Tenga presenti gli strumenti fratelli. Il ritaglio degli spazi per riga è un altro mestiere: quella pagina toglie gli spazi da ogni riga e non elimina le file vuote.
Collassare tutto lo spazio e togliere tutti gli spazi sono altri mestieri: distruggono il ritmo interno di un documento. Togliere tutte le interruzioni unisce il file in una sola riga. Contare paragrafi o righe riferisce la struttura senza cambiarla.
Preferisca questa pagina quando il documento è già impaginato e serve solo togliere l’alone vuoto prima di salvare, inviare o stampare. HTML e Markdown sono trattati come testo grezzo: i tag non vengono rimossi, e una riga solo di markup conta ancora come contenuto se ha caratteri visibili. Insegnando o formando i revisori, mostri lo stesso campione prima e dopo così si vede che cambiano solo le righe vuote dei bordi e che la spaziatura interna alle parole più le file vuote interne restano intatte.
Casi d'uso
Riordinare posta ed esportazioni di chat incollate
Tolga l’alone vuoto sopra il saluto e sotto la firma, conservando la riga vuota che separa i paragrafi.
Normalizzare compiti e dump Markdown
Docenti e pipeline di siti statici scartano le file vuote iniziali e finali dei file inviati prima di salvare o rendere il corpo.
Domande frequenti
Questo cancella le righe vuote in mezzo al testo?
No. Vengono rimosse solo le righe vuote del principio assoluto e della fine assoluta. Le file vuote interne restano dove sono.
Gli spazi tra le parole o all’inizio di una riga con contenuto vengono rimossi?
No. Le righe con contenuto vengono copiate invariate. Il rientro iniziale, gli spazi finali di una riga non vuota e i doppi spazi dentro una frase sono conservati.
Che cosa conta come riga vuota?
Una riga senza caratteri, oppure una che contiene solo spazi come spazi o tabulazioni. Una riga con un qualsiasi carattere visibile è contenuto.
Che cosa succede se si omette il campo text?
Una stringa vuota è accettata e restituisce un documento pulito vuoto.
Togliere le righe vuote ai bordi è gratis?
Lo strumento del browser è gratuito e viene eseguito in locale.
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/str/trim-blank-edges \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"\n\n Hello world \n\nKeep this spacing\n\n"}'const res = await fetch("https://api.kit.forhosting.com/str/trim-blank-edges", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "\n\n Hello world \n\nKeep this spacing\n\n"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/trim-blank-edges",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "\n\n Hello world \n\nKeep this spacing\n\n"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/trim-blank-edges", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"\\n\\n Hello world \\n\\nKeep this spacing\\n\\n"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"\n\n Hello world \n\nKeep this spacing\n\n"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/trim-blank-edges", 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": "\n\n Hello world \n\nKeep this spacing\n\n"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.trim_blank_edges",
"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 | 100000 |
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
Il percorso è un’analisi deterministica, senza rete, senza orologio e senza caso, così l’esecutore gratuito del browser e l’API restituiscono lo stesso JSON a ogni chiamata.
Come chiamare l’API e che cosa contiene la risposta
Una stringa vuota è valida: non ci sono righe di contenuto, quindi il risultato è un campo text vuoto, zero righe restanti e un message che indica quanti bianchi di bordo sono stati tolti da quel buffer vuoto. Preferisca inviare il corpo multilinea grezzo piuttosto che ritagliarlo in anticipo se vuole che i conteggi e changed riflettano l’incolla originale. Invii un corpo JSON con il campo string obbligatorio text. Gli alias input, value, string, s, content e body sono accettati così i client più vecchi non devono rinominare il payload. Il valore deve essere una stringa e non superare centomila caratteri, un tetto rigido che impedisce a un solo incolla di esaurire la memoria del Worker o del browser. Se manca text, se arriva null, se il tipo non è string o se il payload è troppo grande, la risposta è invalid_input e non si addebita nulla. In caso di successo la risposta restituisce input come la stringa originale inviata, text come il risultato ritagliato ai bordi unito con LF, line_count come il numero di righe restanti comprese le vuote interne, lines come quell’array ordinato, leading_blank_lines e trailing_blank_lines come i conteggi pelati da ciascuna estremità, blank_lines_removed come la loro somma, chars_before e chars_after come le lunghezze della stringa originale e di quella pulita, changed come true quando è stata tolta almeno una riga vuota di bordo, e message come un breve riepilogo in inglese. Il prezzo è un $0.002 fisso per richiesta riuscita con unità item. In integrazione, asserisca su text o lines per il documento pulito, confronti leading_blank_lines e trailing_blank_lines nelle regressioni e tratti invalid_input come un errore del client per un campo assente, non come un evento di fatturazione.
Suggerimenti pratici, limiti e ricerche correlate
I controlli andata e ritorno per i test sono semplici: invii due righe vuote, un titolo, un vuoto interno, una riga di corpo e altre due vuote, e si aspetti il titolo e il corpo con il vuoto interno ancora in mezzo; invii una prima riga solo di spazi e un’ultima solo di tabulazione intorno a un paragrafo e confermi che quei bordi spariscono mentre il rientro del paragrafo resta; ometta text di proposito per confermare che invalid_input nomina il campo. Le attività fallite che restituiscono invalid_input non consumano il saldo prepagato, il che mantiene economica la convalida dei moduli e i test negativi di CI.
Casi di integrazione
Preparare fixture di registro e frammenti
Gli script di QA incollano l’uscita della console con file vuote extra a entrambe le estremità e necessitano di una fixture stabile che preservi ancora la spaziatura interna.