Tôi có một chuỗi dài và tôi muốn vừa với nó trong một lĩnh vực nhỏ. Để đạt được điều đó, tôi chia chuỗi thành các dòng trên khoảng trắng. Thuật toán diễn ra như sau:Tách văn bản thành các dòng có chiều dài tối đa
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();
}
Nhưng điều này bị ngắt khi có từ ngắn, theo sau là từ dài hơn. "foo howcomputerwork" với độ dài tối đa là 16 không phá vỡ, nhưng tôi muốn nó. Một ý nghĩ tôi đã mong chờ được thấy nơi khoảng trống tiếp theo xảy ra, nhưng tôi không chắc liệu điều đó có dẫn đến một vài dòng nhất có thể không.
Bạn có muốn * ít nhất * n ký tự trong một dòng hoặc * nhiều nhất * không? Bởi vì nếu bạn muốn * nhiều nhất * n ký tự bạn cần phải làm việc theo cách của bạn trở lại từ ký tự thứ n đến khoảng trắng. Và nếu bất cứ lúc nào có một từ với nhiều hơn n ký tự, bạn đang say.^_ ^; – Corak
@Corak "Phân tách văn bản thành các dòng có ** độ dài ** tối đa", không có nghĩa là * nhiều nhất *? – Nolonar
@Nolonar có, nhưng mã ngụ ý * ít nhất *, vì vậy tôi không chắc chắn. – Corak