Substring String после проверки длины строки без использования If или Try Catch - PullRequest
1 голос
/ 14 марта 2012

Просто любопытно, если я могу подстроку строки только тогда, когда String.Length больше или равно 20 без использования If или Try catch?

Спасибо!

Ответы [ 6 ]

17 голосов
/ 14 марта 2012

Хмм, что вы пробовали Просто проверьте заранее:

if(input.Length >= 20)
{
   input = input.Substring(0,20);
}

Если вы действительно не хотите использовать оператор if, вы можете использовать Linq, который просто запутывает решение и в этом случае менее производительный:

input = new string(input.Take(20).ToArray());

Или технически это также не использует оператор if:

input = input.Length >= 20 ? input.Substring(0,20) : input;
11 голосов
/ 14 марта 2012

Использовать расширение строки. Он по-прежнему использует IF, однако он делает ваш код чище при его использовании.

    public static string Left(this string input, int length)
    {
        string result = input;
        if (input != null && input.Length > length)
        {
            result = input.Substring(0, length);
        }
        return result;
    }

использование:

input = input.Left(20);
5 голосов
/ 14 марта 2012
someString = someString.Substring(0,Math.Min(20,someString.Length));
2 голосов
/ 14 марта 2012

просто сошел с ума ...

a.SubString(Math.Min(startPos, a.Length), Math.Min(a.Length - Math.Min(startPos, a.Length),  
            requestedLen - Math.Min(startPos, a.Length);

Боже мой, мой мозг горит, время ударить мешок ...

1 голос
/ 14 марта 2012

Это действительно нуждается в разъяснении, так как вы не указываете, что именно вы хотите сделать, если оно меньше 20. Возвращать исходную строку или возвращать ноль?

В любом случае, вы можете использовать троичный оператор, еслиВы не хотите блок if:

(someString.Length < 20) ? someString : someString.SubString(...
0 голосов
/ 14 марта 2012

Нет необходимости в try-catch, если вы убедитесь, что диапазон подстрок находится в пределах исходного диапазона строк.Конечно, вы не можете получить подстроку, которая длиннее исходной.

...