Italiano

Come rimuovere le interruzioni di riga dal testo

Incolla il testo nel Text Toolkit. Se desideri un blocco continuo, passa alla modalità Trova e sostituisci Regex, trova \s*\n\s* e sostituiscilo con un singolo spazio.

Se vuoi mantenere le interruzioni di paragrafo, usa prima Taglia righe, poi trova (?<!\n)\n(?!\n) e sostituisci con uno spazio. Questo modello corrisponde a un ritorno a capo che non ha alcun ritorno a capo su entrambi i lati, ovvero un ritorno a capo a metà paragrafo, e lascia solo il ritorno a capo doppio tra i paragrafi.

Perché il testo arriva con interruzioni di riga rigide

La copia da un PDF è la solita fonte. Un PDF non ha paragrafi - ha testo posizionato su una pagina - quindi la copia inserisce una nuova riga ovunque finisca una riga visiva. Un paragrafo che occupava sei righe sulla pagina arriva come sei righe di testo.

L'e-mail in testo semplice è l'altra fonte comune. I client di posta più vecchi incartavano i messaggi in uscita con caratteri 72 o 76 e le risposte tra virgolette conservano tali interruzioni a tempo indeterminato.

La caratteristica distintiva è che le interruzioni cadono a metà frase, più o meno nella stessa colonna, piuttosto che alla fine della frase. Questo è ciò che li rende meccanicamente rimovibili: le interruzioni di paragrafo reali sono separate da una riga BLANK e i ritorni a capo a metà paragrafo no. Tutto ciò che segue si basa su questa differenza.

Mantenere i paragrafi: il metodo a uno schema

Lo schema recita: un ritorno a capo che non è preceduto da un ritorno a capo e non è seguito da uno. Corrisponde un ritorno a capo a metà paragrafo; ogni ritorno a capo in una doppia interruzione ha un ritorno a capo su un lato, quindi nessuno dei due corrisponde.

Se lo strumento rifiuta il pattern con un errore, il tuo browser non supporta lookbehind. In tal caso, utilizza la sostituzione più semplice \s*\n\s* per unire tutto e reintrodurre le interruzioni di paragrafo in qualsiasi cosa in cui incolli il testo.

  1. Premere Taglia linee. Questo rimuove gli spazi bianchi iniziali e finali da ogni riga, quindi un separatore di paragrafo diventa esattamente due ritorni a capo anziché un ritorno a capo, uno spazio vagante e un altro ritorno a capo.
  2. Spunta Regex.
  3. Trova (?<!\n)\n(?!\n) e sostituisci con un singolo spazio. Premi Sostituisci tutto.
  4. Controlla il conteggio. Dovrebbe corrispondere all'incirca al numero di righe a capo e dovrebbe essere inferiore al numero totale di righe di circa il numero di paragrafi.

Unire tutto in un unico blocco

Per una citazione, una query di ricerca o qualsiasi cosa contenuta in un singolo campo, non è necessario proteggere affatto i paragrafi.

Modalità Regex, trova \s*\n\s* e sostituisci con un singolo spazio. \s* su entrambi i lati assorbe il rientro e gli spazi finali allo stesso tempo, quindi non è necessaria una successiva pulizia separata del doppio spazio.

Terminazioni di riga di Windows e altre cose che vanno storte

  • Se una sostituzione su \n riporta zero o lascia dietro di sé caratteri sparsi, il testo avrà terminazioni di riga Windows. Trova \r e sostituiscilo prima con niente; che converte CRLF in LF e i modelli sopra si comportano correttamente.
  • Le parole con trattino divise su righe - "inter-" poi "nazionale" - diventano "internazionali" dopo l'unione. Trova "-" e sostituisci con nulla, ma leggi prima il conteggio, perché questo schema corrisponde anche ai trattini legittimi in prosa.
  • Gli spazi doppi possono sopravvivere se una linea termina con uno spazio e hai utilizzato il modello lookbehind. Trova due spazi, sostituiscili con uno ed eseguilo due volte.
  • Il testo senza righe vuote tra i paragrafi non ha alcun segnale da proteggere. Nessun modello può recuperare un limite di paragrafo che non è mai stato codificato e dovrai reinserirlo manualmente.

Due cose sulla modalità regex di questo strumento

I modelli sono compilati all'interno di una guardia. Un modello non valido ti dà un messaggio di errore e lascia il testo esattamente com'era: una parentesi aperta solitaria è un normale stato intermedio durante la digitazione e non dovrebbe distruggere il tuo lavoro.

I modelli vengono compilati con il flag globale e senza i flag multilinea o dotall. Una sostituzione vale quindi sempre e dovunque; il punto non corrisponde a una nuova riga; e ^ e $ si ancorano all'intero testo anziché a ciascuna riga. Per agire per riga, abbina esplicitamente il fine riga, che è ciò che fanno i modelli sopra.

I campi Trova e sostituisci sono input a riga singola. Puoi MATCH un ritorno a capo con \n, ma non puoi INSERT uno: un \n digitato nel campo di sostituzione viene inserito come una barra rovesciata seguita da una n. Questo è il motivo per cui il metodo sopra non ha mai bisogno di reimpostare una nuova riga.

Esempio realizzato: due paragrafi copiati da un PDF

Il testo incollato presenta un'interruzione dopo ogni riga stampata e una riga vuota tra i due paragrafi. Usando / per una nuova riga, assomiglia a questo:

"La commissione si è riunita martedì per esaminare la / proposta presentata a marzo. Diversi membri / hanno espresso preoccupazioni riguardo al calendario. / / Una versione riveduta sarà diffusa prima / della prossima riunione."

Ci sono cinque ritorni a capo in totale: quattro ritorni a capo e un'interruzione di paragrafo scritti come due ritorni a capo consecutivi. Quattro su cinque dovrebbero andarsene.

  1. Premere Taglia linee.
  2. Seleziona Regex, trova (?<!\n)\n(?!\n), sostituisci con uno spazio, Sostituisci tutto.
  3. Leggi il conteggio riportato.

Risultato: Lo strumento segnala le sostituzioni 3 - i tre a capo del paragrafo centrale - e il risultato sono due paragrafi, ciascuno su una riga continua, ancora separati da una riga vuota. L'uso di \s*\n\s* invece avrebbe riportato 4 e avrebbe unito entrambi i paragrafi in uno solo, che è la risposta giusta per una citazione e quella sbagliata qui.

Apri lo strumento

Pulisci il testo nel Text Toolkit

Trova e sostituisci letterale e regex con una cronologia degli annullamenti e un conteggio delle sostituzioni dopo ogni passaggio. Niente di ciò che incolli viene inviato da nessuna parte.

Ciò che questo non copre

  • Si tratta di trova e sostituisci, non di riflusso. Non è in grado di distinguere un ritorno a capo di una frase da una riga volutamente breve come un blocco di indirizzi, un versetto o un elenco puntato.
  • Il campo di sostituzione non può inserire un ritorno a capo, quindi qualsiasi tecnica che richieda di reinserire le interruzioni di riga deve terminare da qualche altra parte.
  • Il modello lookbehind necessita di un browser che supporti le asserzioni lookbehind. Un browser più vecchio segnala un errore di modello non valido anziché fallire silenziosamente.
  • L'elaborazione viene eseguita sul thread principale, quindi un documento molto grande potrebbe mettere brevemente in pausa l'interfaccia durante una trasformazione.
  • L'annullamento è limitato alle ultime operazioni 50.
  • Nulla viene salvato tra una visita e l'altra. Ricaricare la pagina elimina il tuo lavoro, in base alla progettazione.