Подтвердить что ты не робот

Как ограничить строку длиной не более определенной длины?

Я попробовал следующее:

var Title = LongTitle.Substring(0,20)

Это работает, но если LongTitle имеет длину меньше 20. Как ограничить строки до 20 символов, но не получить ошибку, если они всего лишь длиной 5 символов?

4b9b3361

Ответ 1

Убедитесь, что длина не превышает LongTitle (null проверка пропущена):

int maxLength = Math.Min(LongTitle.Length, 20);
string title = LongTitle.Substring(0, maxLength);

Это можно преобразовать в метод расширения:

public static class StringExtensions
{

    /// <summary>
    /// Truncates string so that it is no longer than the specified number of characters.
    /// </summary>
    /// <param name="str">String to truncate.</param>
    /// <param name="length">Maximum string length.</param>
    /// <returns>Original string or a truncated one if the original was too long.</returns>
    public static string Truncate(this string str, int length)
    {
        if(length < 0)
        {
            throw new ArgumentOutOfRangeException("length", "Length must be >= 0");
        }

        if (str == null)
        {
            return null;
        }

        int maxLength = Math.Min(str.Length, length);
        return str.Substring(0, maxLength);
    }
}

который может использоваться как:

string title = LongTitle.Truncate(20);

Ответ 2

string title = new string(LongTitle.Take(20).ToArray());

Ответ 3

Кратчайший,

var title = longTitle.Substring(0, Math.Min(20, longTitle.Length))

Ответ 4

Если длина строки больше 20, используйте 20, иначе используйте длину.

string  title = LongTitle.Substring(0,
    (LongTitle.Length > 20 ? 20 : LongTitle.Length));