Tôi đang cố gắng xây dựng một phương pháp mở rộng chuỗi để cắt chuỗi thành một độ dài nhất định nhưng không bị ngắt từ. Tôi muốn kiểm tra xem liệu có bất cứ thứ gì được xây dựng trong khung hoặc một phương pháp thông minh hơn tôi hay không. Đây là của tôi cho đến nay (chưa được kiểm tra kỹ lưỡng):Xây dựng một chức năng cắt xén chuỗi thông minh trong C#
public static string SmartTrim(this string s, int length)
{
StringBuilder result = new StringBuilder();
if (length >= 0)
{
if (s.IndexOf(' ') > 0)
{
string[] words = s.Split(' ');
int index = 0;
while (index < words.Length - 1 && result.Length + words[index + 1].Length <= length)
{
result.Append(words[index]);
result.Append(" ");
index++;
}
if (result.Length > 0)
{
result.Remove(result.Length - 1, 1);
}
}
else
{
result.Append(s.Substring(0, length));
}
}
else
{
throw new ArgumentOutOfRangeException("length", "Value cannot be negative.");
}
return result.ToString();
}
tôi sẽ không chia nhỏ. tôi sẽ lặp lại chuỗi tìm kiếm từ vỡ tiếp theo. dừng lại nếu vị trí của chu kỳ tìm thấy là sau độ dài đã cho. nếu không, hãy thêm từ đó vào trước trình tạo chuỗi.để tìm từ trước khi tìm được điểm ngắt, bạn sẽ cần phải lưu trữ vị trí của khoảng ngắt được tìm thấy trước đó (hoặc số không). có ý nghĩa? – akonsu
Bạn có thể không quan tâm đến ứng dụng của mình, nhưng hãy nhớ rằng các hàm 'Trim' được xây dựng sẵn đang thực sự kiểm tra' char.IsWhiteSpace', không chỉ là 'không gian'. – Marc
@Marc - lưu ý tốt. Tôi đang hỏi từ ngữ của tôi trong khi gõ nó. –