Какой метод в классе String возвращает только первые N символов?

Я хотел бы написать метод расширения для класса 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 ?

176
задан Majid 30 April 2014 в 03:35
поделиться

5 ответов

public static string TruncateLongString(this string str, int maxLength)
{
    if (string.IsNullOrEmpty(str))
        return str;
    return str.Substring(0, Math.Min(str.Length, maxLength));
}
352
ответ дан 23 November 2019 в 20:22
поделиться

Вы можете использовать LINQ str.Take (n) или str.SubString (0, n) , где последний вызовет ] ArgumentOutOfRangeException исключение для n> str.Length .

Обратите внимание, что версия LINQ возвращает IEnumerable , поэтому вам придется преобразовать IEnumerable в строку : новая строка (s.Take (n) .ToArray ()) .

31
ответ дан 23 November 2019 в 20:22
поделиться
string truncatedToNLength = new string(s.Take(n).ToArray());  

У этого решения есть небольшой бонус: если n больше s.Length, оно все равно работает правильно.

61
ответ дан 23 November 2019 в 20:22
поделиться
public static string TruncateLongString(this string str, int maxLength)
{
    return str.Length <= maxLength ? str : str.Remove(maxLength);
}
5
ответ дан 23 November 2019 в 20:22
поделиться
substring(int startpos, int lenght);
-1
ответ дан 23 November 2019 в 20:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: