我正在寻找一种将字符串分割成一定数量的部分的算法。这些部分应包含完整的单词(因此,空格用于分割字符串),并且这些部分的长度应几乎相同,或包含可能最长的部分。
我知道编写一个可以实现我想要的功能的代码并不难,但是我想知道是否为此目的使用了一种经过验证的快速算法?
编辑:为了澄清我的问题,我将向您介绍我要解决的问题。
我生成固定宽度的图像。在这些图像中,我使用PHP中的GD和Freetype编写了用户名。由于我的宽度固定,因此我想将名称分成两行或三行(如果它们不匹配)。
为了填充尽可能多的空间,我想以每行包含尽可能多的单词的方式拆分名称。我的意思是,为了使每一行的长度接近整个文本块的平均行长,一行中的单词数应尽可能多。因此,如果有一个长词和两个短词,则如果使所有行都等长,则两个短词应排成一行。
(然后,我使用1、2或3行来计算文本块的宽度,如果它适合我的图像,我将其渲染。即使有3行并且不适合,我也会减小字体大小,直到一切都好为止。)
示例: This is a long text 应显示如下内容:
This is a long text
要么:
但不是:
而且不是:
希望我能清楚地解释我要寻找的东西。
如果您在谈论换行,请看一下Dynamic Line Breaking,它提供了一种动态编程解决方案,可以将单词分成几行。