Как я повторно переношу абзац к определенной длине строки?

У меня есть большой абзац, который я должен разделить на строки, таким образом, что каждая строка не должна иметь больше чем 100 символов, и никакие обещания не должны быть нарушены. Как я пошел бы о выполнении этого? Я предполагаю с регулярными выражениями, лучший способ, но я не уверен как.

6
задан brian d foy 21 February 2010 в 23:33
поделиться

2 ответа

Хотя вы должны использовать библиотечную функцию, если она у вас есть, как предложил KennyTM, простой regex для решения этой проблемы может быть:

.{1,100}\b

Это займет 100 символов или меньше, и не будет разбивать слова. Однако он будет разбивать другие символы, например, точка в конце предложения может быть отделена от последнего слова (последнее слово<\n>. новая строка).
Если это проблема, вы также можете попробовать:

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

Это гарантирует, что последний символ в каждом совпадении - пробел.

Все это предполагает, что вы считаете пробелы символами, и, вероятно, не имеете новых строк в вашем тексте (один абзац), и не имеете слов длиной более 100 символов.

0
ответ дан 10 December 2019 в 00:37
поделиться

Использовать Text::Wrap.

Text::Wrap::wrap() - это очень простой форматтер абзацев. Он форматирует один абзац за раз, разрывая строки на границах слов. Отступы контролируются для первой строки ($initial_tab) и всех последующих строк ($subsequent_tab) независимо.

10
ответ дан 10 December 2019 в 00:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: