2010-02-21 25 views
6

Ho un grande paragrafo che ho bisogno di dividere in righe in modo tale che ogni riga non deve contenere più di 100 caratteri e non devono essere spezzate parole. Come potrei fare questo? Immagino che con le espressioni regolari sia il modo migliore ma non so come.Come reincollare un paragrafo con una determinata lunghezza della linea?

+0

se hai 1 problema e decidi di risolverlo con una regex, ora hai 2 problemi. –

+0

'$ questions [1098656] -> commenti [1] -> print();' (http://stackoverflow.com/questions/1098296/are-regular-expressions-worth-the-hassle/1098656) – kennytm

risposta

10

Utilizzare Text::Wrap.

Text::Wrap::wrap() è un formatter di paragrafo molto semplice. Formatta un singolo paragrafo alla volta suddividendo le linee ai confini delle parole. L'indentazione è controllata per la prima riga ($initial_tab) e tutte le righe successive ($subsequent_tab) in modo indipendente.

0

Mentre si dovrebbe usare una funzione di libreria, se ne avete uno, come suggerito KennyTM, una semplice espressione regolare per risolvere questo può essere:

.{1,100}\b 

Questo richiederà 100 caratteri o meno, e non si rompe parole. Romperebbe però altri personaggi, ad esempio il periodo alla fine di una frase potrebbe essere separato dall'ultima parola (last word<\n>. new line).
Se questo è un problema, si può anche provare:

.{1,99}(\s|.$) 

che assicura l'ultimo carattere in ogni partita è uno spazio bianco.

Tutti questi presuppongono che contino spazi come caratteri e che probabilmente non abbiano righe nuove nel testo (un solo paragrafo) e che non contengano più di 100 caratteri.

+0

You don 'voglio usare \ b lì. Si avvolgerà su cose come l'apostrofo in non. –

+0

@Brian - corretto. Ne ho parlato e ho un'alternativa. – Kobi

Problemi correlati