我有一個很長的字符串,我想將它放在一個小的字段中。爲了實現這一點,我把字符串分成空白行。算法如下:將文本分割成最大長度的線條
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 2013-03-08 12:54:56
@Corak「將文本分割成最大**長度的行」,這並不意味着*最多*? – Nolonar 2013-03-08 12:56:32
@Nolonar是的,但代碼暗示*至少*,所以我不確定。 – Corak 2013-03-08 12:58:08