У меня есть большой абзац, который я должен разделить на строки, таким образом, что каждая строка не должна иметь больше чем 100 символов, и никакие обещания не должны быть нарушены. Как я пошел бы о выполнении этого? Я предполагаю с регулярными выражениями, лучший способ, но я не уверен как.
Хотя вы должны использовать библиотечную функцию, если она у вас есть, как предложил KennyTM, простой regex для решения этой проблемы может быть:
.{1,100}\b
Это займет 100 символов или меньше, и не будет разбивать слова. Однако он будет разбивать другие символы, например, точка в конце предложения может быть отделена от последнего слова (последнее слово<\n>. новая строка
).
Если это проблема, вы также можете попробовать:
.{1,99}(\s|.$)
Это гарантирует, что последний символ в каждом совпадении - пробел.
Все это предполагает, что вы считаете пробелы символами, и, вероятно, не имеете новых строк в вашем тексте (один абзац), и не имеете слов длиной более 100 символов.
Использовать Text::Wrap.
Text::Wrap::wrap()
- это очень простой форматтер абзацев. Он форматирует один абзац за раз, разрывая строки на границах слов. Отступы контролируются для первой строки ($initial_tab
) и всех последующих строк ($subsequent_tab
) независимо.