【问题标题】:How do I re-wrap a paragraph to a certain line length?如何将段落重新换行到特定的行长?
【发布时间】:2011-01-19 08:07:37
【问题描述】:

我有一个大段落,我需要将其分成几行,每行不得超过 100 个字符,并且不得中断任何单词。我该怎么做呢?我想使用正则表达式是最好的方法,但我不确定如何。

【问题讨论】:

标签: regex perl split


【解决方案1】:

使用Text::Wrap

Text::Wrap::wrap() 是一个非常简单的段落格式化程序。它通过在单词边界处换行来一次格式化一个段落。第一行 ($initial_tab) 和所有后续行 ($subsequent_tab) 的缩进是独立控制的。

【讨论】:

    【解决方案2】:

    虽然您应该使用库函数(如果有的话),正如 KennyTM 建议的那样,一个简单的正则表达式可以解决这个问题:

    .{1,100}\b
    

    这将占用 100 个字符或更少,并且不会打断单词。但它会破坏其他字符,例如句末的句点可能与最后一个单词分开 (last word<\n>. new line)。
    如果这是一个问题,您也可以尝试:

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

    这样可以确保每个匹配项中的最后一个字符都是空格。

    所有这些都假设您将空格计为字符,并且可能在您的文本(单个段落)中没有换行符,并且没有超过 100 个字符的单词。

    【讨论】:

    • 你不想在那里使用 \b 。它将包裹在诸如don't中的撇号之类的东西上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 2015-05-22
    • 1970-01-01
    • 2011-11-16
    • 2011-03-09
    • 1970-01-01
    相关资源
    最近更新 更多