Существует , вероятно, , нет необходимости включать регулярные выражения во что-то такое простое.Возьмите этот метод расширения:
public static string Abbreviate(this string text, int length) {
if (text.Length <= length) {
return text;
}
char[] delimiters = new char[] { ' ', '.', ',', ':', ';' };
int index = text.LastIndexOfAny(delimiters, length - 3);
if (index > (length / 2)) {
return text.Substring(0, index) + "...";
}
else {
return text.Substring(0, length - 3) + "...";
}
}
Если строка достаточно короткая, она возвращается как есть.В противном случае, если «граница слова» найдена во второй половине строки, она «изящно» обрезается в этой точке.Если нет, то он обрезается трудным путем чуть ниже необходимой длины.
Если строка обрезается вообще, к ней добавляется многоточие ("...").* Если вы ожидаете, что строка будет содержать конструкции, не относящиеся к естественному языку (например, URL), вам необходимо настроить это, чтобы обеспечить хорошее поведение при любых обстоятельствах.В этом случае работа с регулярным выражением может быть лучше.