【发布时间】:2013-03-08 12:45:15
【问题描述】:
我有一个很长的字符串,我想把它放在一个小字段中。为了实现这一点,我将字符串分成空格上的行。算法是这样的:
public static string BreakLine(string text, int maxCharsInLine)
{
int charsInLine = 0;
StringBuilder builder = new StringBuilder();
for (int i = 0; i < text.Length; i++)
{
char c = text[i];
builder.Append(c);
charsInLine++;
if (charsInLine >= maxCharsInLine && char.IsWhiteSpace(c))
{
builder.AppendLine();
charsInLine = 0;
}
}
return builder.ToString();
}
但是当有一个短词,然后是一个较长的词时,这会中断。最大长度为 16 的“foo howcomputerwork”不会中断,但我想要它。一个想法是我期待看到下一个空格出现在哪里,但我不确定这是否会导致尽可能少的行。
【问题讨论】:
-
您希望一行中至少 n 个字符还是最多?因为如果你想要最多 n 个字符,你需要从第n 个字符返回到一个空格。如果任何时候有一个单词超过 n 个字符,你就完蛋了。 ^_^;
-
@Corak "将文本分割成最大长度的行",这不意味着最多吗?
-
@Nolonar 是的,但代码暗示至少,所以我不确定。