長い文字列があり、小さなフィールドに収めたいのですが。これを実現するために、文字列を空白の行に分割します。アルゴリズムは次のようになります。テキストを最大長の行に分割する
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
@Corak "テキストを**最大**長さの行に分割する"とは、*であっても最大*を意味しません。 – Nolonar
@Nolonarはい、コードは少なくとも*を意味するので、わかりませんでした。 – Corak