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?
Respuesta
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.
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.
Usted don No quiero usar \ b allí. Se ajustará a cosas como el apóstrofo en no. –
@Brian - correcto. Lo mencioné y tengo una alternativa. – Kobi
- 1. Formato entero, relleno a una longitud determinada
- 2. ¿Ajustar el texto a la siguiente línea cuando excede cierta longitud?
- 3. ¿Cómo puedo ajustar el texto a cierta longitud en Vim?
- 4. ¿Cómo actualizo/vuelvo a cargar una extensión de Chrome?
- 5. ¿Cómo dividir una cadena en subcadenas de una longitud determinada?
- 6. ¿Cómo desactivo y luego vuelvo a habilitar una advertencia?
- 7. ¿Cómo desplazar UITableView a una posición determinada?
- 8. Vuelve a lo básico. ¿Cómo vuelvo a C++?
- 9. Mostrar la primera línea de un párrafo
- 10. ¿Cómo desactivo y vuelvo a habilitar un botón con javascript?
- 11. ¿Cómo vuelvo a autenticar a un usuario en una aplicación ASP.Net MVC 3 _Intranet_?
- 12. Longitud de cadena con una fuente determinada para adaptarse a UITextView
- 13. jQuery UI Arrastrable, Ajustar a una cuadrícula
- 14. Cómo vuelvo a mapear las claves dict de Python
- 15. En Symfony2 cómo vuelvo a dirigir dentro de un controlador a una URL con una etiqueta de anclaje/hash de
- 16. ¿Cómo responder a un clic fuera de un área determinada?
- 17. Mover la pantalla a una posición determinada
- 18. ¿Cómo ajustar el texto a la siguiente línea en una vista de texto de Android?
- 19. Ajustar una distribución a los datos - MATLAB
- 20. Comience una nueva línea (párrafo) en una etiqueta o TextView
- 21. ¿Cómo me vuelvo a conectar al servidor de WEBrick?
- 22. Cómo forzar una pieza de texto a ser 'dirección ltr' dentro de un 'dirección rtl' párrafo
- 23. ¿Cómo vuelvo a indentificar inteligentemente Clojure en Emacs?
- 24. ¿Sangrar solo la primera línea de texto de un párrafo?
- 25. ¿Cómo vuelvo a tomar un repositorio Git bifurcado sin eliminar y volver a bifurcar?
- 26. Matplotlib: el ancho de línea se agrega a la longitud de una línea
- 27. ReportLab - cómo introducir salto de línea si el párrafo es demasiado largo para una línea
- 28. Sangría texto después de la primera línea en un párrafo
- 29. Extender un segmento de línea a una distancia específica
- 30. ¿Cómo asignar una latitud/longitud a un mapa distorsionado?
si tiene 1 problema y decide resolverlo con una expresión regular, ahora tiene 2 problemas. –
'$ questions [1098656] -> comments [1] -> print();' (http://stackoverflow.com/questions/1098296/are-regular-expressions-worth-the-hassle/1098656) – kennytm