Я хотел бы написать метод расширения для класса String
, чтобы, если входная строка была длиннее, чем предоставленная длина N
, должны отображаться только первые N
символов.
Вот как это выглядит:
public static string TruncateLongString(this string str, int maxLength)
{
if (str.Length <= maxLength)
return str;
else
//return the first maxLength characters
}
Какой метод String. * ()
я могу использовать для получения только первых N
символов из str
?
public static string TruncateLongString(this string str, int maxLength)
{
if (string.IsNullOrEmpty(str))
return str;
return str.Substring(0, Math.Min(str.Length, maxLength));
}
Вы можете использовать LINQ str.Take (n)
или str.SubString (0, n)
, где последний вызовет ] ArgumentOutOfRangeException
исключение для n> str.Length
.
Обратите внимание, что версия LINQ возвращает IEnumerable
, поэтому вам придется преобразовать IEnumerable
в строку
: новая строка (s.Take (n) .ToArray ())
.
string truncatedToNLength = new string(s.Take(n).ToArray());
У этого решения есть небольшой бонус: если n больше s.Length, оно все равно работает правильно.
public static string TruncateLongString(this string str, int maxLength)
{
return str.Length <= maxLength ? str : str.Remove(maxLength);
}