13

所以我有一个目前看起来像这样的条件......

if (input.Contains(",") || input.Contains("/") || input.Contains(@"\") || input.Contains("."))

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

if ( input IN (",", "/", @"\", ....etc )  )

有人知道在不添加大量代码的情况下完成此任务的任何酷技巧吗?

4

8 回答 8

30

考虑使用正则表达式(在括号中指定要检查的字符 - 请记住其中一些必须转义):

Regex.IsMatch(input, @"[,/]");

或者

new[] {",", "/"}.Any(input.Contains)
于 2012-05-02T17:55:59.403 回答
11

这个怎么样?

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

    }
于 2012-05-02T17:57:35.297 回答
8

这是否以最短时间获胜?

@".,/\".Any(input.Contains)
于 2012-05-02T18:04:54.347 回答
5
"asdfasdf".ContainsAny(".","/","4");

public static bool ContainsAny(this string stringToCheck, params string[] parameters)
{
    return parameters.Any(parameter => stringToCheck.Contains(parameter));
}
于 2014-04-11T18:55:03.243 回答
4

尝试

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

或者

If (input.IndexOfAny(@",/\.".ToCharArray()) >= 0) {
    ...
}
于 2012-05-02T17:58:29.253 回答
4

你可以使用一些Linq:

if ( ",/\\.".ToCharArray().Any( c => input.Contains( c ) ) )
于 2012-05-02T17:58:53.887 回答
4

您可以使用 String.IndexOfAny - 它会扫描字符串以查找数组中的一组字符中的任何一个:

if (e.Label.IndexOfAny(new char[]{',', '/', @'\', '.' /* other chars here */}) > -1)
于 2012-05-02T17:59:05.640 回答
1

扩展方法可以使事情看起来很干净。看看以下内容。

 public static bool ContainsChar(this string input, params char[] characters)
        {
            foreach (var character in characters)
            {
                if (input.Contains(character))
                {
                    return true;
                }
            }
            return false;
        }

该方法的参数是可变参数,因此您可以添加任意数量的字符,用逗号分隔。如果您不习惯使用扩展方法,请修改为以下内容:

public static bool ContainsChar(string input, params char[] characters)
            {
                foreach (var character in characters)
                {
                    if (input.Contains(character))
                    {
                        return true;
                    }
                }
                return false;
            }

示例用法如下:

string myString = "this is my string";
//extension
if (myString.ContainsChar('.', '*', '%')) //do something

//static method
if (ContainsChar(myString, '.', '*', '%')) //do something
于 2019-08-29T11:50:40.323 回答