检查多个包含在一个字符串上

Kev*_*lia 8 c# string contains

所以我有条件,目前看起来像这样......

if (input.Contains(",") || input.Contains("/") || input.Contains(@"\") || input.Contains("."))
Run Code Online (Sandbox Code Playgroud)

我需要添加一些我想要检查的字符,并且想知道是否有更简洁的语法来完成同样的事情?类似于SQL的IN运算符?

if ( input IN (",", "/", @"\", ....etc )  )
Run Code Online (Sandbox Code Playgroud)

如果没有添加大量代码,任何人都知道有什么很酷的技巧吗?

emp*_*mpi 27

考虑使用Regex(指定要在括号中检查的字符 - 请记住其中一些必须进行转义):

Regex.IsMatch(input, @"[,/]");
Run Code Online (Sandbox Code Playgroud)

要么

new[] {",", "/"}.Any(input.Contains)
Run Code Online (Sandbox Code Playgroud)


ja7*_*a72 8

这个怎么样?

    if(input.IndexOfAny(new char[] { ',', '/', '\\', '.' })>=0)
    {

    }
Run Code Online (Sandbox Code Playgroud)

  • 当然,这只是一个旁注,因为 IndexOf 实际上有一个带字符串的重载版本。 (2认同)

小智 6

"asdfasdf".ContainsAny(".","/","4");

public static bool ContainsAny(this string stringToCheck, params string[] parameters)
{
    return parameters.Any(parameter => stringToCheck.Contains(parameter));
}
Run Code Online (Sandbox Code Playgroud)


Ing*_*ahn 5

这会赢得最短的吗?

@".,/\".Any(input.Contains)
Run Code Online (Sandbox Code Playgroud)