tôi sửa đổi phiên bản của Jim H như vậy mà nó hỗ trợ một số trường hợp đặc biệt. Ví dụ: trường hợp câu không chứa bất kỳ ký tự trắng nào; Tôi cũng lưu ý rằng có một vấn đề khi một dòng có một không gian ở vị trí cuối cùng; sau đó không gian được thêm vào cuối và bạn kết thúc với một nhân vật quá nhiều.
Đây là phiên bản của tôi chỉ trong trường hợp ai đó đang quan tâm:
public static List<string> WordWrap(string input, int maxCharacters)
{
List<string> lines = new List<string>();
if (!input.Contains(" "))
{
int start = 0;
while (start < input.Length)
{
lines.Add(input.Substring(start, Math.Min(maxCharacters, input.Length - start)));
start += maxCharacters;
}
}
else
{
string[] words = input.Split(' ');
string line = "";
foreach (string word in words)
{
if ((line + word).Length > maxCharacters)
{
lines.Add(line.Trim());
line = "";
}
line += string.Format("{0} ", word);
}
if (line.Length > 0)
{
lines.Add(line.Trim());
}
}
return lines;
}
Nguồn
2014-05-21 20:41:59
Những gì bạn đã thử? có chuyện gì? –
Tôi lấy nó bạn không muốn chia nhỏ các từ? –
@ L.B Tôi đã thử đọc độ dài của chuỗi và chia nhỏ nó nếu nó vượt quá chiều rộng của hộp, nhưng điều đó sẽ yêu cầu tôi chia nhỏ các từ. Và nó dường như không hoạt động tốt. –