2010-02-21 8 views
6

Tengo un gran párrafo que necesito dividir en líneas para que cada línea no tenga más de 100 caracteres y no se rompa ninguna palabra. ¿Cómo voy a hacer esto? Supongo que con expresiones regulares es la mejor manera, pero no estoy seguro de cómo.¿Cómo vuelvo a ajustar un párrafo a una determinada longitud de línea?

+0

si tiene 1 problema y decide resolverlo con una expresión regular, ahora tiene 2 problemas. –

+0

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

Respuesta

10

Use Text::Wrap.

Text::Wrap::wrap() es un formateador de párrafo muy simple. Formatea un solo párrafo a la vez rompiendo líneas en los límites de las palabras. La sangría se controla para la primera línea ($initial_tab) y todas las líneas subsiguientes ($subsequent_tab) de forma independiente.

0

Mientras que usted debe utilizar una función de biblioteca si tiene uno, como se sugiere KennyTM, una expresión regular sencilla de resolver este puede ser:

.{1,100}\b 

Esto se llevará a 100 caracteres o menos, y no se rompe palabras. Sin embargo, rompería otros caracteres, por ejemplo, el período al final de una oración puede separarse de la última palabra (last word<\n>. new line).
Si eso es un problema, también puede intentar:

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

que asegura el último carácter de cada partido es un espacio en blanco.

Todos estos asumen que cuenta espacios como caracteres, y probablemente no tenga líneas nuevas en su texto (un solo párrafo), y no tenga palabras de más de 100 caracteres.

+0

Usted don No quiero usar \ b allí. Se ajustará a cosas como el apóstrofo en no. –

+0

@Brian - correcto. Lo mencioné y tengo una alternativa. – Kobi

Cuestiones relacionadas