检查字符串长度后不使用If或Try Catch的子串字符串

use*_*715 2 .net c# linq-to-objects

只是好奇我是否只能在String.Length大于或等于20时才能使用字符串而不使用IfTry catch

谢谢!

Bro*_*ass 17

嗯,你有什么尝试?请事先检查一下:

if(input.Length >= 20)
{
   input = input.Substring(0,20);
}
Run Code Online (Sandbox Code Playgroud)

如果你真的不想使用if语句,你可以使用Linq,它只是混淆了解决方案,在这种情况下效率较低:

input = new string(input.Take(20).ToArray());
Run Code Online (Sandbox Code Playgroud)

或者从技术上讲,这不会使用if语句:

input = input.Length >= 20 ? input.Substring(0,20) : input;
Run Code Online (Sandbox Code Playgroud)


Val*_*mas 11

使用字符串扩展名.它仍然使用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;
    }
Run Code Online (Sandbox Code Playgroud)

用法:

input = input.Left(20);
Run Code Online (Sandbox Code Playgroud)


Dor*_*hen 6

someString = someString.Substring(0,Math.Min(20,someString.Length));
Run Code Online (Sandbox Code Playgroud)