Как мне перенести абзац на определенную длину строки? - PullRequest
6 голосов
/ 21 февраля 2010

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

Ответы [ 2 ]

10 голосов
/ 21 февраля 2010

Использование Текст :: Обтекание .

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

0 голосов
/ 21 февраля 2010

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

.{1,100}\b

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

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

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

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

...