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

时间:2012-05-02 17:53:59

标签: c# string contains

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

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

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

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

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

8 个答案:

答案 0 :(得分:27)

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

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

new[] {",", "/"}.Any(input.Contains)

答案 1 :(得分:8)

这个怎么样?

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

    }

答案 2 :(得分:5)

这会赢得最短的胜利吗?

@".,/\".Any(input.Contains)

答案 3 :(得分:4)

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

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

答案 4 :(得分:3)

你可以使用一些Linq:

if ( ",/\\.".ToCharArray().Any( c => input.Contains( c ) ) )

答案 5 :(得分:3)

你可以使用String.IndexOfAny - 它将扫描字符串中数组中任何一个字符:

if (e.Label.IndexOfAny(new char[]{',', '/', @'\', '.' /* other chars here */}) > -1)

答案 6 :(得分:2)

尝试

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

If (input.IndexOfAny(@",/\.".ToCharArray()) >= 0) {
    ...
}

答案 7 :(得分:0)

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

 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